react-native-filament
Version:
A real-time physically based 3D rendering engine for React Native
34 lines (30 loc) • 1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useRecorderRenderLoop = useRecorderRenderLoop;
var _react = require("react");
var _useWorkletEffect = require("./useWorkletEffect");
var _reactNativeWorkletsCore = require("react-native-worklets-core");
function useRecorderRenderLoop(recorder, render) {
// eslint-disable-next-line react-hooks/exhaustive-deps
const memoizedRender = (0, _react.useMemo)(() => render, (0, _reactNativeWorkletsCore.getWorkletDependencies)(render));
(0, _useWorkletEffect.useWorkletEffect)(() => {
'worklet';
let frameCount = 0;
const listener = recorder.addOnReadyForMoreDataListener(() => {
'worklet';
const shouldRenderNext = memoizedRender({
frameIndex: frameCount,
recorder: recorder
});
frameCount++;
return shouldRenderNext;
});
return () => {
'worklet';
listener.remove();
};
});
}
//# sourceMappingURL=useRecorderRenderLoop.js.map