UNPKG

react-native-filament

Version:

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

42 lines (40 loc) 1.44 kB
import { useEffect, useMemo, useRef } from 'react'; import { useFilamentContext } from './useFilamentContext'; export function useConfigureAssetShadow({ renderableManager, asset, receiveShadow, castShadow }) { const { workletContext } = useFilamentContext(); const renderableEntities = useMemo(() => asset === null || asset === void 0 ? void 0 : asset.getRenderableEntities(), [asset]); const prevCastShadowRef = useRef(); useEffect(() => { if (renderableEntities == null || castShadow == null || prevCastShadowRef.current === castShadow) { return; } prevCastShadowRef.current = castShadow; workletContext.runAsync(() => { 'worklet'; renderableEntities.forEach(entity => { renderableManager.setCastShadow(entity, castShadow); }); }); }, [castShadow, renderableManager, renderableEntities, workletContext]); const prevReceiveShadowRef = useRef(); useEffect(() => { if (renderableEntities == null || receiveShadow == null || prevReceiveShadowRef.current === receiveShadow) { return; } prevReceiveShadowRef.current = receiveShadow; workletContext.runAsync(() => { 'worklet'; renderableEntities.forEach(entity => { renderableManager.setReceiveShadow(entity, receiveShadow); }); }); }, [receiveShadow, renderableEntities, renderableManager, workletContext]); } //# sourceMappingURL=useConfigureAssetShadow.js.map