@@ -3,6 +3,7 @@ import { MutableRefObject, useEffect, useRef } from 'react';
33import { useCollaborationSessionStore } from 'explorviz-frontend/src/stores/collaboration/collaboration-session' ;
44import { useLocalUserStore } from 'explorviz-frontend/src/stores/collaboration/local-user' ;
55import { useMinimapStore } from 'explorviz-frontend/src/stores/minimap-service' ;
6+ import { useUserSettingsStore } from 'explorviz-frontend/src/stores/user-settings' ;
67import RemoteUser from 'explorviz-frontend/src/utils/collaboration/remote-user' ;
78import Raycaster from 'explorviz-frontend/src/utils/raycaster' ;
89import * as THREE from 'three' ;
@@ -70,6 +71,10 @@ export default function useInteractionModifier(
7071 } ) )
7172 ) ;
7273
74+ const enableHoverEffects = useUserSettingsStore (
75+ ( state ) => state . visualizationSettings . enableHoverEffects . value
76+ ) ;
77+
7378 // MARK: Refs
7479
7580 const raycaster = useRef < Raycaster > ( new Raycaster ( minimapCamera ) ) ;
@@ -185,15 +190,25 @@ export default function useInteractionModifier(
185190 } else if ( pointers . current . length === 1 ) {
186191 handleMouseMovePan ( event ) ;
187192 } else if ( makeFullsizeMinimap ) {
188- const intersectedViewObj = minimapActions . raycastForObjects (
189- event ,
190- minimapCamera ,
191- raycastObjects
192- ) ;
193- eventCallbacks ?. onMouseMove ?.( intersectedViewObj , event ) ;
193+ // Skip raycasting for hover when hover effects are disabled
194+ if ( enableHoverEffects ) {
195+ const intersectedViewObj = minimapActions . raycastForObjects (
196+ event ,
197+ minimapCamera ,
198+ raycastObjects
199+ ) ;
200+ eventCallbacks ?. onMouseMove ?.( intersectedViewObj , event ) ;
201+ } else {
202+ eventCallbacks ?. onMouseMove ?.( null , event ) ;
203+ }
194204 } else {
195- const intersectedViewObj = raycast ( event ) ;
196- eventCallbacks ?. onMouseMove ?.( intersectedViewObj , event ) ;
205+ // Skip raycasting for hover when hover effects are disabled
206+ if ( enableHoverEffects ) {
207+ const intersectedViewObj = raycast ( event ) ;
208+ eventCallbacks ?. onMouseMove ?.( intersectedViewObj , event ) ;
209+ } else {
210+ eventCallbacks ?. onMouseMove ?.( null , event ) ;
211+ }
197212 }
198213 } ;
199214
@@ -207,6 +222,10 @@ export default function useInteractionModifier(
207222 if ( pointers . current . length > 0 ) {
208223 return ;
209224 }
225+ // Skip raycasting for hover when hover effects are disabled
226+ if ( ! enableHoverEffects ) {
227+ return ;
228+ }
210229 const event = customEvent . detail . srcEvent ;
211230
212231 const intersectedViewObj = raycast ( event ) ;
@@ -636,7 +655,13 @@ export default function useInteractionModifier(
636655 document . removeEventListener ( 'keydown' , keyDown ) ;
637656 document . removeEventListener ( 'keyup' , keyUp ) ;
638657 } ;
639- } , [ camera , objectsToRaycast , minimapCamera , makeFullsizeMinimap ] ) ;
658+ } , [
659+ camera ,
660+ objectsToRaycast ,
661+ minimapCamera ,
662+ makeFullsizeMinimap ,
663+ enableHoverEffects ,
664+ ] ) ;
640665}
641666
642667// MARK: Types
0 commit comments