diff --git a/react-components/package.json b/react-components/package.json index 9d330f1bdbd..ee5c8d61ca9 100644 --- a/react-components/package.json +++ b/react-components/package.json @@ -1,6 +1,6 @@ { "name": "@cognite/reveal-react-components", - "version": "0.55.0", + "version": "0.55.1", "exports": { ".": { "import": "./dist/index.js", diff --git a/react-components/src/hooks/useSceneDefaultCamera.tsx b/react-components/src/hooks/useSceneDefaultCamera.tsx index 3c696e00e2e..22b8fa735e9 100644 --- a/react-components/src/hooks/useSceneDefaultCamera.tsx +++ b/react-components/src/hooks/useSceneDefaultCamera.tsx @@ -44,7 +44,25 @@ export const useSceneDefaultCamera = ( return { fitCameraToSceneDefault: () => { - viewer.cameraManager.setCameraState({ position, target }); + const initialCameraState = viewer.cameraManager.getCameraState(); + + // Preserve pivot point if user has already set a pivot point + // If not, set the pivot point near the center of the scene + // When moving Scene to system space, we will extend the data + // model to store pos, rot and pivot + if ( + initialCameraState.target.x === 0 && + initialCameraState.target.y === 0 && + initialCameraState.target.z === 0 + ) { + viewer.cameraManager.setCameraState({ position, target }); + } else { + const direction = new Vector3().subVectors(position, target).normalize(); + const rotation = new Euler().setFromVector3(direction); + const quaternion = new Quaternion().setFromEuler(rotation); + + viewer.cameraManager.setCameraState({ position, rotation: quaternion }); + } }, isFetched: true }; diff --git a/react-components/stories/SceneContainer.stories.tsx b/react-components/stories/SceneContainer.stories.tsx index f5bd38d63f1..7940179ffb9 100644 --- a/react-components/stories/SceneContainer.stories.tsx +++ b/react-components/stories/SceneContainer.stories.tsx @@ -14,7 +14,6 @@ import { useSceneDefaultCamera, withSuppressRevealEvents } from '../src'; -import { type DefaultCameraManager } from '@cognite/reveal'; import { ToolBar } from '@cognite/cogs.js'; import styled from 'styled-components'; @@ -79,11 +78,6 @@ const SceneContainerStoryContent = ({ const { fitCameraToSceneDefault } = useSceneDefaultCamera(sceneExternalId, sceneSpaceId); useEffect(() => { - (reveal.cameraManager as DefaultCameraManager).setCameraControlsOptions({ - changeCameraTargetOnClick: true, - mouseWheelAction: 'zoomToCursor' - }); - fitCameraToSceneDefault(); }, [reveal, fitCameraToSceneDefault]); return (