From 6c554a007559a6a365dcb41110bb4cc842010d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Tue, 28 May 2024 12:18:57 +0200 Subject: [PATCH 1/3] fix(react-components): don't select objects when clicking in measurement --- react-components/src/hooks/useClickedNode.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/react-components/src/hooks/useClickedNode.tsx b/react-components/src/hooks/useClickedNode.tsx index b9570d98d6c..2247fd9b5e5 100644 --- a/react-components/src/hooks/useClickedNode.tsx +++ b/react-components/src/hooks/useClickedNode.tsx @@ -17,7 +17,8 @@ import { usePointCloudAnnotationMappingForAssetId } from '../components/CachePro import { type PointCloudAnnotationMappedAssetData } from './types'; import { MOUSE, Vector2 } from 'three'; import { type DmsUniqueIdentifier, type Source } from '../utilities/FdmSDK'; -import { useReveal } from '../components/RevealCanvas/ViewerContext'; +import { useRenderTarget, useReveal } from '../components/RevealCanvas/ViewerContext'; +import { NavigationTool } from '../architecture/base/commands/NavigationTool'; export type AssetMappingDataResult = { cadNode: Node3D; @@ -39,6 +40,7 @@ export type ClickedNodeData = { export const useClickedNodeData = (): ClickedNodeData | undefined => { const viewer = useReveal(); + const renderTarget = useRenderTarget(); const [intersection, setIntersection] = useState(undefined); @@ -49,7 +51,10 @@ export const useClickedNodeData = (): ClickedNodeData | undefined => { useEffect(() => { const callback = (event: PointerEventData): void => { void (async () => { - if (event.button !== MOUSE.LEFT) { + const navigationTool = renderTarget.toolController.getEqual(new NavigationTool()); + const isNavigationActive = renderTarget.toolController.activeTool === navigationTool; + + if (event.button !== MOUSE.LEFT || !isNavigationActive) { return; } From 649186f6ef1160ec1f9844fc7bb7a1e43d4412aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Tue, 28 May 2024 12:37:42 +0200 Subject: [PATCH 2/3] chore: add utility methods to ToolController --- .../src/architecture/base/renderTarget/ToolController.ts | 8 ++++++++ react-components/src/hooks/useClickedNode.tsx | 5 +---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/react-components/src/architecture/base/renderTarget/ToolController.ts b/react-components/src/architecture/base/renderTarget/ToolController.ts index df0aadb2a9f..b204500f1ad 100644 --- a/react-components/src/architecture/base/renderTarget/ToolController.ts +++ b/react-components/src/architecture/base/renderTarget/ToolController.ts @@ -37,6 +37,14 @@ export class ToolControllers extends PointerEvents { return this._activeTool; } + public get defaultTool(): BaseTool | undefined { + return this._defaultTool; + } + + public get isDefaultToolActive(): boolean { + return this.activeTool === this.defaultTool; + } + // ================================================ // OVERRIDES of PointerEvents // ================================================ diff --git a/react-components/src/hooks/useClickedNode.tsx b/react-components/src/hooks/useClickedNode.tsx index 2247fd9b5e5..16547e0a077 100644 --- a/react-components/src/hooks/useClickedNode.tsx +++ b/react-components/src/hooks/useClickedNode.tsx @@ -51,10 +51,7 @@ export const useClickedNodeData = (): ClickedNodeData | undefined => { useEffect(() => { const callback = (event: PointerEventData): void => { void (async () => { - const navigationTool = renderTarget.toolController.getEqual(new NavigationTool()); - const isNavigationActive = renderTarget.toolController.activeTool === navigationTool; - - if (event.button !== MOUSE.LEFT || !isNavigationActive) { + if (event.button !== MOUSE.LEFT || !renderTarget.toolController.isDefaultToolActive) { return; } From dc13e937d0bb2a93dde29132c4d28150f49c1159 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Tue, 28 May 2024 12:39:54 +0200 Subject: [PATCH 3/3] chore: remove unused import --- react-components/src/hooks/useClickedNode.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/react-components/src/hooks/useClickedNode.tsx b/react-components/src/hooks/useClickedNode.tsx index 16547e0a077..ae9dd9da730 100644 --- a/react-components/src/hooks/useClickedNode.tsx +++ b/react-components/src/hooks/useClickedNode.tsx @@ -18,7 +18,6 @@ import { type PointCloudAnnotationMappedAssetData } from './types'; import { MOUSE, Vector2 } from 'three'; import { type DmsUniqueIdentifier, type Source } from '../utilities/FdmSDK'; import { useRenderTarget, useReveal } from '../components/RevealCanvas/ViewerContext'; -import { NavigationTool } from '../architecture/base/commands/NavigationTool'; export type AssetMappingDataResult = { cadNode: Node3D;