Browse Source

WebGLRenderer: Refactored animation loop code.

Mr.doob 8 years ago
parent
commit
0e3d73d313
1 changed files with 19 additions and 7 deletions
  1. 19 7
      src/renderers/WebGLRenderer.js

+ 19 - 7
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 ) ) {