UNPKG

react-native-filament-buildcores

Version:

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

67 lines (65 loc) 2.42 kB
import { useEffect } from 'react'; import { optionsToJSI } from '../types'; import { useFilamentContext } from '../hooks/useFilamentContext'; import { makeAmbientOcclusionHostObject } from '../utilities/makeAmbientOcclusionHostObject'; import { makeBloomHostObject } from '../utilities/makeBloomHostObject'; import { makeDynamicResolutionHostObject } from '../utilities/makeDynamicResolutionHostObject'; /** * Takes configurations as props and applies them using the imperative API. * Needs to have a valid `FilamentScene` in the tree. * * @private */ export function Configurator({ rendererProps, viewProps, children }) { const { view, renderer } = useFilamentContext(); // Apply view configs const { ambientOcclusionOptions, antiAliasing, bloomOptions, dithering, dynamicResolutionOptions, postProcessing, screenSpaceRefraction, shadowing, temporalAntiAliasingOptions } = viewProps; useEffect(() => { if (ambientOcclusionOptions != null) { const options = makeAmbientOcclusionHostObject(view, ambientOcclusionOptions); view.setAmbientOcclusionOptions(options); } if (bloomOptions != null) { const options = makeBloomHostObject(view, bloomOptions); view.setBloomOptions(options); } if (dynamicResolutionOptions != null) { const options = makeDynamicResolutionHostObject(view, dynamicResolutionOptions); view.setDynamicResolutionOptions(options); } if (antiAliasing != null) view.antiAliasing = antiAliasing; if (dithering != null) view.dithering = dithering; if (postProcessing != null) view.postProcessing = postProcessing; if (screenSpaceRefraction != null) view.screenSpaceRefraction = screenSpaceRefraction; if (shadowing != null) view.shadowing = shadowing; if (temporalAntiAliasingOptions != null) view.temporalAntiAliasingOptions = optionsToJSI(temporalAntiAliasingOptions); }, [view, ambientOcclusionOptions, antiAliasing, bloomOptions, dithering, dynamicResolutionOptions, postProcessing, screenSpaceRefraction, shadowing, temporalAntiAliasingOptions]); // Apply renderer configs const { frameRateOptions } = rendererProps ?? {}; useEffect(() => { if (frameRateOptions != null) { renderer.setFrameRateOptions(frameRateOptions); } }, [renderer, frameRateOptions]); return children; } //# sourceMappingURL=Configurator.js.map