Spaces:
Running
Running
| function WebGLAnimation() { | |
| let context = null; | |
| let isAnimating = false; | |
| let animationLoop = null; | |
| let requestId = null; | |
| function onAnimationFrame(time, frame) { | |
| animationLoop(time, frame); | |
| requestId = context.requestAnimationFrame(onAnimationFrame); | |
| } | |
| return { | |
| start: function () { | |
| if (isAnimating === true) return; | |
| if (animationLoop === null) return; | |
| requestId = context.requestAnimationFrame(onAnimationFrame); | |
| isAnimating = true; | |
| }, | |
| stop: function () { | |
| context?.cancelAnimationFrame(requestId); | |
| isAnimating = false; | |
| }, | |
| setAnimationLoop: function (callback) { | |
| animationLoop = callback; | |
| }, | |
| setContext: function (value) { | |
| context = value; | |
| }, | |
| }; | |
| } | |
| export { WebGLAnimation }; | |