webgl-benchmark
Version:
Benchmark WebGL performance using different JavaScript rendering/game engines, such as Pixi and Phaser.
59 lines (47 loc) • 1.59 kB
JavaScript
import polyfillPhaser2 from '../../vendor/polyfill-phaser2.js';
import loadScript from '../loadScript.js';
import storage from '../storage.js';
import App from './App.js';
export default function loadPhaser(stats, gui) {
let resolvePromise;
const v2Offical = [
"2.0.7", "2.1.3", "2.2.2", "2.3.0", "2.4.9", "2.5.0", "2.6.2"
];
const v2Community = [
"2.7.10", "2.8.8", "2.9.4", "2.10.6", "2.11.1", "2.12.1", "2.13.3", "2.14.0", "2.15.1", "2.16.2", "2.17.0", "2.18.0", "2.19.2"
];
const versions = [
...v2Offical,
...v2Community
].reverse();
const guiData = {
version: versions.includes(storage.get('version')) ? storage.get('version') : versions[0]
};
storage.set('version', guiData.version);
const guiController = gui.add(guiData, 'version', versions)
guiController.onChange((version) => {
storage.set('version', version);
window.location.href = storage.url().href;
});
let versionMatch = guiData.version.match(/(\d+).(\d+).(\d+)/);
let isOfficialVersion = !versionMatch || versionMatch[2] < 7;
let libUrl = '';
if (isOfficialVersion) {
libUrl = `https://cdnjs.cloudflare.com/ajax/libs/phaser/${guiData.version}/phaser.min.js`;
} else {
libUrl = `https://cdn.jsdelivr.net/npm/phaser-ce@${guiData.version}`;
}
loadScript(libUrl)
.catch(() => {
console.log(`Could not load Phaser\n[${guiData.version}] from [${libUrl}]\nMay not be a valid version`);
})
.then(() => {
if (window.Phaser) {
polyfillPhaser2();
new App(resolvePromise, stats);
}
});
return new Promise((resolve) => {
resolvePromise = resolve;
});
}