browser-game-loop
Version:
Game loop for browser
1 lines • 789 B
JavaScript
(function(e){"use strict";if(typeof define==="function"&&define.amd){define([],e)}else if(typeof exports==="object"){module.exports=e()}else{window.createGameLoop=e()}})(function(){return function(e){"use strict";var n=1e3,t=e.updateTimeStep||n/30,o=0,r=0,i=performance.now(),u=i,f=u,a=e.fpsFilterStrength||20,c=0,s=false,p=e.slow||1,m=p*t,l=e.update,d=e.render,w=e.input,F;function g(){F=requestAnimationFrame(g);w();i=performance.now();o=i-u;u=i;r+=Math.min(n,o);while(r>=m){r-=m;l(t)}c+=(o-c)/a;d(r/m)}function S(){u=performance.now();if(!s){s=true;f=u}F=requestAnimationFrame(g)}function h(){cancelAnimationFrame(F)}function A(){return n/c}function q(){return(u-f)/n}function x(e){p=e;m=p*t}function y(){return p}return{start:S,stop:h,getFps:A,getElapsedTime:q,setSlow:x,getSlow:y}}});