t2-mapper/src/components/useDistanceFromCamera.ts
2025-11-29 09:08:20 -08:00

22 lines
628 B
TypeScript

import { useFrame, useThree } from "@react-three/fiber";
import { RefObject, useRef } from "react";
import { Object3D } from "three";
import { useWorldPosition } from "./useWorldPosition";
export function useDistanceFromCamera<T extends Object3D>(
ref: RefObject<T>,
): RefObject<number> {
const { camera } = useThree();
const distanceRef = useRef<number>(null);
const worldPosRef = useWorldPosition(ref);
useFrame(() => {
if (!worldPosRef.current) {
distanceRef.current = null;
} else {
distanceRef.current = camera.position.distanceTo(worldPosRef.current);
}
});
return distanceRef;
}