|
@@ -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 ) ) {
|