UNPKG

react-native-filament

Version:

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

30 lines (29 loc) 1.02 kB
import { useMemo } from 'react'; import { useFilamentContext } from './useFilamentContext'; function isFilamentModel(asset) { // @ts-expect-error Because asset is a HostObject and using "in" check is a) expensive and b) somehow broken return asset.state != null; } /** * Creates a animator for the given {@linkcode FilamentAsset} or {@linkcode FilamentInstance}. * * @note For each asset/instance you should only have one animator. */ export function useAnimator(modelOrAsset) { const { nameComponentManager } = useFilamentContext(); const animator = useMemo(() => { if (modelOrAsset == null) return undefined; if (isFilamentModel(modelOrAsset)) { if (modelOrAsset.state === 'loading') return undefined; const { asset } = modelOrAsset; return asset.createAnimator(nameComponentManager); } return modelOrAsset.createAnimator(nameComponentManager); }, [modelOrAsset, nameComponentManager]); return animator; } //# sourceMappingURL=useAnimator.js.map