UNPKG

whs-cube-spheres

Version:

This plugin has a container with multiple spheres.

68 lines (54 loc) 1.42 kB
import {system} from '../polyfill'; import {ModuleSystem} from './ModuleSystem'; import {ModuleManager} from './ModuleManager'; class App extends ModuleSystem { simulate = false; updateEnabled = true; loops = []; constructor(modules = []) { super(); this.manager = new ModuleManager(this); this.modules = modules; this.integrateModules(); } // CONTROLS & UPDATING start() { const requestAnimFrame = (() => { return system.window.requestAnimationFrame || system.window.webkitRequestAnimationFrame || system.window.mozRequestAnimationFrame || function (callback) { system.window.setTimeout(callback, 1000 / 60); }; })(); const {loops, updateEnabled} = this; function process() { requestAnimFrame(process); if (!updateEnabled) return; for (let i = 0, ll = loops.length; i < ll; i++) { const e = loops[i]; if (e.enabled) e.execute(e.clock); } } this.updateEnabled = true; process(); } stop() { this.updateEnabled = false; } addLoop(loop) { return new Promise(resolve => { this.loops.push(loop); resolve(loop); }); } removeLoop(loop) { return new Promise(resolve => { this.loops.filter(l => l !== loop); resolve(loop); }); } } export { App };