UNPKG

react-native-filament

Version:

A real-time physically based 3D rendering engine for React Native

45 lines (44 loc) 1.81 kB
"use strict"; import { useFilamentContext } from './useFilamentContext'; import { useDisposableResource } from './useDisposableResource'; const cameraPosition = [0, 0, 8]; const cameraTarget = [0, 0, 0]; const cameraUp = [0, 1, 0]; export function useCameraManipulator({ orbitHomePosition = cameraPosition, targetPosition = cameraTarget, upVector = cameraUp, ...config }) { const { engine } = useFilamentContext(); const orbitHomePositionX = orbitHomePosition[0]; const orbitHomePositionY = orbitHomePosition[1]; const orbitHomePositionZ = orbitHomePosition[2]; const targetPositionX = targetPosition[0]; const targetPositionY = targetPosition[1]; const targetPositionZ = targetPosition[2]; const upVectorX = upVector[0]; const upVectorY = upVector[1]; const upVectorZ = upVector[2]; const zoomSpeed = config.zoomSpeed?.[0]; const orbitSpeedX = config.orbitSpeed?.[0]; const orbitSpeedY = config.orbitSpeed?.[1]; const cameraManipulator = useDisposableResource(() => { const localConfig = { orbitHomePosition: [orbitHomePositionX, orbitHomePositionY, orbitHomePositionZ], targetPosition: [targetPositionX, targetPositionY, targetPositionZ], upVector: [upVectorX, upVectorY, upVectorZ] }; if (zoomSpeed != null) { localConfig.zoomSpeed = [zoomSpeed]; } if (orbitSpeedX != null && orbitSpeedY != null) { localConfig.orbitSpeed = [orbitSpeedX, orbitSpeedY]; } return Promise.resolve(engine.createOrbitCameraManipulator(localConfig)); }, [engine, orbitHomePositionX, orbitHomePositionY, orbitHomePositionZ, orbitSpeedX, orbitSpeedY, targetPositionX, targetPositionY, targetPositionZ, upVectorX, upVectorY, upVectorZ, zoomSpeed]); return cameraManipulator; } //# sourceMappingURL=useCameraManipulator.js.map