()
| 3 | import type { NavigationNode } from '../types'; |
| 4 | |
| 5 | export function useNavigationNode(): NavigationNode { |
| 6 | const cameraMode = useCameraStore((s) => s.cameraMode); |
| 7 | const cameraProjection = useCameraStore((s) => s.cameraProjection); |
| 8 | const cameraFov = useCameraStore((s) => s.cameraFov); |
| 9 | const horizonLock = useCameraStore((s) => s.horizonLock); |
| 10 | const autoRotateMode = useCameraStore((s) => s.autoRotateMode); |
| 11 | const autoRotateSpeed = useCameraStore((s) => s.autoRotateSpeed); |
| 12 | const flySpeed = useCameraStore((s) => s.flySpeed); |
| 13 | const flyTransitionDuration = useCameraStore((s) => s.flyTransitionDuration); |
| 14 | const pointerLock = useCameraStore((s) => s.pointerLock); |
| 15 | const autoFovEnabled = useCameraStore((s) => s.autoFovEnabled); |
| 16 | const flyToImageId = useCameraStore((s) => s.flyToImageId); |
| 17 | const flyToViewState = useCameraStore((s) => s.flyToViewState); |
| 18 | const currentViewState = useCameraStore((s) => s.currentViewState); |
| 19 | const navigationHistory = useCameraStore((s) => s.navigationHistory); |
| 20 | |
| 21 | return useMemo<NavigationNode>( |
| 22 | () => ({ |
| 23 | nodeType: 'navigation', |
| 24 | mode: cameraMode, |
| 25 | projection: cameraProjection, |
| 26 | fov: cameraFov, |
| 27 | horizonLock, |
| 28 | autoRotateMode, |
| 29 | autoRotateSpeed, |
| 30 | flySpeed, |
| 31 | flyTransitionDuration, |
| 32 | pointerLock, |
| 33 | autoFovEnabled, |
| 34 | flyToImageId, |
| 35 | flyToViewState, |
| 36 | currentViewState, |
| 37 | navigationHistory, |
| 38 | }), |
| 39 | [ |
| 40 | cameraMode, |
| 41 | cameraProjection, |
| 42 | cameraFov, |
| 43 | horizonLock, |
| 44 | autoRotateMode, |
| 45 | autoRotateSpeed, |
| 46 | flySpeed, |
| 47 | flyTransitionDuration, |
| 48 | pointerLock, |
| 49 | autoFovEnabled, |
| 50 | flyToImageId, |
| 51 | flyToViewState, |
| 52 | currentViewState, |
| 53 | navigationHistory, |
| 54 | ] |
| 55 | ); |
| 56 | } |
no outgoing calls
no test coverage detected