react-native-filament
Version:
A real-time physically based 3D rendering engine for React Native
28 lines (25 loc) • 808 B
JavaScript
import { useMemo } from 'react';
import { useWorkletEffect } from './useWorkletEffect';
import { getWorkletDependencies } from 'react-native-worklets-core';
export function useRecorderRenderLoop(recorder, render) {
// eslint-disable-next-line react-hooks/exhaustive-deps
const memoizedRender = useMemo(() => render, getWorkletDependencies(render));
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