/** * @author mr.doob / http://mrdoob.com/ */ var THREE = THREE || { REVISION: '50dev' }; if ( ! self.Int32Array ) { self.Int32Array = Array; self.Float32Array = Array; } // http://paulirish.com/2011/requestanimationframe-for-smart-animating/ // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating // requestAnimationFrame polyfill by Erik Möller // fixes from Paul Irish and Tino Zijdel ( function () { var lastTime = 0; var vendors = [ 'ms', 'moz', 'webkit', 'o' ]; for ( var x = 0; x < vendors.length && !window.requestAnimationFrame; ++ x ) { window.requestAnimationFrame = window[ vendors[ x ] + 'RequestAnimationFrame' ]; window.cancelAnimationFrame = window[ vendors[ x ] + 'CancelAnimationFrame' ] || window[ vendors[ x ] + 'CancelRequestAnimationFrame' ]; } if ( !window.requestAnimationFrame ) { window.requestAnimationFrame = function ( callback, element ) { var currTime = Date.now(), timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) ); var id = window.setTimeout( function() { callback( currTime + timeToCall ); }, timeToCall ); lastTime = currTime + timeToCall; return id; }; } if ( !window.cancelAnimationFrame ) { window.cancelAnimationFrame = function ( id ) { clearTimeout( id ); }; } }() );