Files
Dwinzo_dev/app/src/modules/collaboration/functions/setCameraView.ts
Vishnu 8b7c28e9c0 Enhance collaboration features by adding user targeting and camera control functionality
- Implement user following functionality in Header component
- Update FollowPerson component to handle target and rotation
- Modify CollabUserIcon to include target data for selected users
- Adjust setCameraView function to utilize target for camera positioning
- Extend user types to include position, rotation, and target properties
2025-05-07 15:31:07 +05:30

35 lines
996 B
TypeScript

import * as THREE from 'three';
interface SetCameraViewProps {
controls: any;
camera: THREE.Camera;
position: THREE.Vector3 | { x: number; y: number; z: number };
rotation: THREE.Euler | { x: number; y: number; z: number };
username?: string;
target?: THREE.Vector3 | { x: number; y: number; z: number };
}
export default async function setCameraView({
controls,
camera,
position,
rotation,
username,
target
}: SetCameraViewProps) {
if (!controls || !camera) return;
if (target == null) return;
// Normalize position
const newPosition = position instanceof THREE.Vector3
? position
: new THREE.Vector3(position.x, position.y, position.z);
const newTarget = target instanceof THREE.Vector3 ? target : new THREE.Vector3(target.x, target.y, target.z);
if (controls.setTarget) {
controls?.setLookAt(...newPosition.toArray(), ...newTarget.toArray(), true);
}
}