UNPKG

react-native-filament

Version:

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

48 lines (45 loc) 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useConfigureAssetShadow = useConfigureAssetShadow; var _react = require("react"); var _useFilamentContext = require("./useFilamentContext"); function useConfigureAssetShadow({ renderableManager, asset, receiveShadow, castShadow }) { const { workletContext } = (0, _useFilamentContext.useFilamentContext)(); const renderableEntities = (0, _react.useMemo)(() => asset === null || asset === void 0 ? void 0 : asset.getRenderableEntities(), [asset]); const prevCastShadowRef = (0, _react.useRef)(); (0, _react.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 = (0, _react.useRef)(); (0, _react.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