diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 519a1bdacfbaddf33ed612d1e00780d7028ba570..5909732262b9681d74f2190b33e3663aab467dfb 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -1004,22 +1004,34 @@ function WebGLRenderer( parameters ) { }; - // Rendering + // Animation Loop - this.animate = function ( callback ) { + var isAnimating = false; + var onAnimationFrame = null; + + function start() { - function onFrame() { + if ( isAnimating ) return; + ( vr.getDevice() || window ).requestAnimationFrame( loop ); - callback(); + } - ( vr.getDevice() || window ).requestAnimationFrame( onFrame ); + function loop( time ) { - } + if ( onAnimationFrame !== null ) onAnimationFrame( time ); + ( vr.getDevice() || window ).requestAnimationFrame( loop ); - ( vr.getDevice() || window ).requestAnimationFrame( onFrame ); + } + + this.animate = function ( callback ) { + + onAnimationFrame = callback; + start(); }; + // Rendering + this.render = function ( scene, camera, renderTarget, forceClear ) { if ( ! ( camera && camera.isCamera ) ) {