@@ -78,7 +78,24 @@ function render(timestamp: number, state: RootState, frame?: _XRFrame) {
7878 return state . frameloop === 'always' ? 1 : state . internal . frames
7979}
8080
81- export function createLoop < TCanvas > ( roots : Map < TCanvas , Root > ) {
81+ export type Invalidate = ( state ?: RootState , frames ?: number ) => void
82+ export type Advance = ( timestamp : number , runGlobalEffects ?: boolean , state ?: RootState , frame ?: _XRFrame ) => void
83+
84+ interface Loop {
85+ loop : ( timestamp : number ) => void
86+ /**
87+ * Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.
88+ * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#invalidate
89+ */
90+ invalidate : Invalidate
91+ /**
92+ * Advances the frameloop and runs render effects, useful for when manually rendering via `frameloop="never"`.
93+ * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#advance
94+ */
95+ advance : Advance
96+ }
97+
98+ export function createLoop < TCanvas > ( roots : Map < TCanvas , Root > ) : Loop {
8299 let running = false
83100 let repeat : number
84101 let frame : number
@@ -138,17 +155,5 @@ export function createLoop<TCanvas>(roots: Map<TCanvas, Root>) {
138155 if ( runGlobalEffects ) flushGlobalEffects ( 'after' , timestamp )
139156 }
140157
141- return {
142- loop,
143- /**
144- * Invalidates the view, requesting a frame to be rendered. Will globally invalidate unless passed a root's state.
145- * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#invalidate
146- */
147- invalidate,
148- /**
149- * Advances the frameloop and runs render effects, useful for when manually rendering via `frameloop="never"`.
150- * @see https://docs.pmnd.rs/react-three-fiber/api/additional-exports#advance
151- */
152- advance,
153- }
158+ return { loop, invalidate, advance }
154159}
0 commit comments