定位工具更改
parent
6804d909b8
commit
4aa1a05ea9
|
|
@ -40,17 +40,23 @@ class FusionJumpToPointTool extends AnnotationDisplayTool {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const { element, currentPoints } = evt.detail || {}
|
const { element, currentPoints } = evt.detail || {}
|
||||||
const worldPoint = currentPoints?.world
|
if (!element || !currentPoints) return
|
||||||
if (!element || !worldPoint || worldPoint.length < 3) return
|
|
||||||
|
|
||||||
const enabledElement = getEnabledElement(element)
|
const enabledElement = getEnabledElement(element)
|
||||||
const { viewport, renderingEngine } = enabledElement || {}
|
const { viewport, renderingEngine } = enabledElement || {}
|
||||||
if (!viewport || !renderingEngine) return
|
if (!viewport || !renderingEngine) return
|
||||||
|
|
||||||
const selectedPoint = this._resolveSelectedPoint(viewport, worldPoint)
|
const sourceIsMip = this._isMipViewportId(viewport.id)
|
||||||
|
const interactionWorldPoint = this._getInteractionWorldPoint(viewport, currentPoints, !sourceIsMip)
|
||||||
|
if (!interactionWorldPoint || interactionWorldPoint.length < 3) return
|
||||||
|
const selectedPoint = sourceIsMip
|
||||||
|
? this._resolveSelectedPoint(viewport, interactionWorldPoint)
|
||||||
|
: interactionWorldPoint
|
||||||
if (!selectedPoint || selectedPoint.length < 3) return
|
if (!selectedPoint || selectedPoint.length < 3) return
|
||||||
|
|
||||||
this.setPoint(selectedPoint, viewport.id, renderingEngine.id)
|
this.setPoint(selectedPoint, viewport.id, renderingEngine.id, {
|
||||||
|
jumpToTargetViewports: sourceIsMip,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
mouseDownCallback(evt) {
|
mouseDownCallback(evt) {
|
||||||
|
|
@ -70,15 +76,14 @@ class FusionJumpToPointTool extends AnnotationDisplayTool {
|
||||||
const { viewport, renderingEngine } = enabledElement || {}
|
const { viewport, renderingEngine } = enabledElement || {}
|
||||||
if (!viewport || !renderingEngine) return
|
if (!viewport || !renderingEngine) return
|
||||||
|
|
||||||
let worldPoint = currentPoints?.world
|
const sourceIsMip = this._isMipViewportId(viewport.id)
|
||||||
if ((!worldPoint || worldPoint.length < 3) && currentPoints?.canvas && viewport.canvasToWorld) {
|
const worldPoint = this._getInteractionWorldPoint(viewport, currentPoints, !sourceIsMip)
|
||||||
worldPoint = viewport.canvasToWorld(currentPoints.canvas)
|
|
||||||
}
|
|
||||||
if (!worldPoint || worldPoint.length < 3) return
|
if (!worldPoint || worldPoint.length < 3) return
|
||||||
|
|
||||||
const annotation = this._getViewportCrosshairAnnotation(viewport)
|
const annotation = this._getViewportCrosshairAnnotation(viewport)
|
||||||
const sourceViewportId = this.dragSourceViewportId || annotation?.data?.sourceViewportId || viewport.id
|
const sourceViewportId = sourceIsMip
|
||||||
const sourceIsMip = this._isMipViewportId(viewport.id)
|
? (this.dragSourceViewportId || annotation?.data?.sourceViewportId || viewport.id)
|
||||||
|
: viewport.id
|
||||||
this.setPoint(worldPoint, sourceViewportId, renderingEngine.id, {
|
this.setPoint(worldPoint, sourceViewportId, renderingEngine.id, {
|
||||||
jumpToTargetViewports: sourceIsMip,
|
jumpToTargetViewports: sourceIsMip,
|
||||||
})
|
})
|
||||||
|
|
@ -345,6 +350,27 @@ class FusionJumpToPointTool extends AnnotationDisplayTool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_getInteractionWorldPoint(viewport, currentPoints, preferCanvasToWorld = false) {
|
||||||
|
const worldPoint = currentPoints?.world
|
||||||
|
const canvasPoint = currentPoints?.canvas
|
||||||
|
if (preferCanvasToWorld && canvasPoint && viewport?.canvasToWorld) {
|
||||||
|
const worldFromCanvas = viewport.canvasToWorld(canvasPoint)
|
||||||
|
if (worldFromCanvas && worldFromCanvas.length >= 3) {
|
||||||
|
return worldFromCanvas
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (worldPoint && worldPoint.length >= 3) {
|
||||||
|
return worldPoint
|
||||||
|
}
|
||||||
|
if (canvasPoint && viewport?.canvasToWorld) {
|
||||||
|
const worldFromCanvas = viewport.canvasToWorld(canvasPoint)
|
||||||
|
if (worldFromCanvas && worldFromCanvas.length >= 3) {
|
||||||
|
return worldFromCanvas
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
_dispatchPointEvent(worldPoint, sourceViewportId, crosshairAppearance) {
|
_dispatchPointEvent(worldPoint, sourceViewportId, crosshairAppearance) {
|
||||||
const { dispatchEventName } = this.configuration
|
const { dispatchEventName } = this.configuration
|
||||||
if (!dispatchEventName || typeof window === 'undefined') return
|
if (!dispatchEventName || typeof window === 'undefined') return
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue