react-native-filament
Version:
A real-time physically based 3D rendering engine for React Native
73 lines (70 loc) • 2.71 kB
JavaScript
;
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