UNPKG

@woosh/meep-engine

Version:

Pure JavaScript game engine. Fully featured and production ready.

68 lines (48 loc) 1.64 kB
import LabelView from "../view/common/LabelView.js"; /** * Used for monitoring progress of the engine startup */ export class EngineBootstrapper { /** * * @type {Node} */ rootNode = null; /** * * @param {Engine} engine * @returns {Promise} */ boot(engine) { const v = new LabelView('Engine initialization'); v.css({ color: 'white' }); v.link(); this.rootNode.appendChild(v.el); // NOTE: the engine used to be started here, this was moved out const started = Promise.resolve(); const vExecutionEngineState = new LabelView(''); const vAssetManagerState = new LabelView(''); v.addChild(vExecutionEngineState); v.addChild(vAssetManagerState); const update_stats = () => { const executor = engine.executor; const assetManager = engine.assetManager; vExecutionEngineState.updateText(`Executor: ${executor.queueReady.length} ready, ${executor.queueUnresolved.length} unresolved`); vAssetManagerState.updateText(`Assets: ${assetManager.assets.size} loaded, ${assetManager.request_map.size} pending`); }; const update_loop = () => { update_stats(); if (v.isLinked) { requestIdleCallback(update_loop) } }; update_loop(); started.then(() => { this.rootNode.removeChild(v.el); v.unlink(); }); return started; } }