UNPKG

react-native-filament

Version:

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

73 lines (70 loc) 2.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Configurator = Configurator; var _react = require("react"); var _types = require("../types"); var _useFilamentContext = require("../hooks/useFilamentContext"); var _makeAmbientOcclusionHostObject = require("../utilities/makeAmbientOcclusionHostObject"); var _makeDynamicResolutionHostObject = require("../utilities/makeDynamicResolutionHostObject"); var _makeBloomOptionsHostObject = require("../utilities/makeBloomOptionsHostObject"); /** * Takes configurations as props and applies them using the imperative API. * Needs to have a valid `FilamentScene` in the tree. * * @private */ function Configurator({ rendererProps, viewProps, children }) { const { view, renderer } = (0, _useFilamentContext.useFilamentContext)(); // Apply view configs const { ambientOcclusionOptions, antiAliasing, dithering, dynamicResolutionOptions, bloomOptions, postProcessing, screenSpaceRefraction, shadowing, temporalAntiAliasingOptions } = viewProps; (0, _react.useEffect)(() => { if (ambientOcclusionOptions != null) { const options = (0, _makeAmbientOcclusionHostObject.makeAmbientOcclusionHostObject)(view, ambientOcclusionOptions); view.setAmbientOcclusionOptions(options); } if (dynamicResolutionOptions != null) { const options = (0, _makeDynamicResolutionHostObject.makeDynamicResolutionHostObject)(view, dynamicResolutionOptions); view.setDynamicResolutionOptions(options); } if (bloomOptions != null) { const options = (0, _makeBloomOptionsHostObject.makeBloomOptionsHostObject)(view, bloomOptions); view.setBloomOptions(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 = (0, _types.optionsToJSI)(temporalAntiAliasingOptions); }, [view, ambientOcclusionOptions, antiAliasing, dithering, dynamicResolutionOptions, bloomOptions, postProcessing, screenSpaceRefraction, shadowing, temporalAntiAliasingOptions]); // Apply renderer configs const { frameRateOptions } = rendererProps ?? {}; (0, _react.useEffect)(() => { if (frameRateOptions != null) { renderer.setFrameRateOptions(frameRateOptions); } }, [renderer, frameRateOptions]); return children; } //# sourceMappingURL=Configurator.js.map