From 0e3d73d313d70be51de2994b208c90d95a522380 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Thu, 17 Aug 2017 14:37:48 -0700 Subject: [PATCH] WebGLRenderer: Refactored animation loop code. --- src/renderers/WebGLRenderer.js | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 519a1bdacf..5909732262 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 ) ) { -- GitLab