react-native-filament
Version:
A real-time physically based 3D rendering engine for React Native
45 lines (42 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useRecorder = useRecorder;
var _react = require("react");
var _useFilamentContext = require("./useFilamentContext");
var _FilamentProxy = require("../native/FilamentProxy");
var _useDisposableResource = require("./useDisposableResource");
var _useWorkletEffect = require("./useWorkletEffect");
var _Logger = require("../utilities/logger/Logger");
function useRecorder({
width,
height,
fps,
bitRate
}) {
const {
engine,
workletContext
} = (0, _useFilamentContext.useFilamentContext)();
const recorder = (0, _react.useMemo)(() => {
_Logger.Logger.debug('Creating recorder JS');
return _FilamentProxy.FilamentProxy.createRecorder(width, height, fps, bitRate);
}, [bitRate, fps, height, width]);
const swapChain = (0, _useDisposableResource.useDisposableResource)(workletContext.createRunAsync(() => {
'worklet';
return engine.createSwapChainForRecorder(recorder);
}), [engine, recorder]);
(0, _useWorkletEffect.useWorkletEffect)(() => {
'worklet';
if (swapChain == null) {
return;
}
engine.setSwapChain(swapChain);
});
return {
recorder,
swapChain
};
}
//# sourceMappingURL=useRecorder.js.map