@giro3d/giro3d
Version:
A JS/WebGL framework for 3D geospatial data visualization
28 lines (27 loc) • 4.9 kB
JavaScript
/*
* Copyright (c) 2015-2018, IGN France.
* Copyright (c) 2018-2026, Giro3D team.
* SPDX-License-Identifier: MIT
*/
import WorkerPool from '../../utils/WorkerPool';
function createWorker() {
const worker = new Worker(URL.createObjectURL(new Blob([atob('InVzZSBzdHJpY3QiOygoKT0+e2Z1bmN0aW9uIHAoZSxuKXtyZXR1cm57cmVxdWVzdElkOmUsZXJyb3I6biBpbnN0YW5jZW9mIEVycm9yP24ubWVzc2FnZToidW5rbm93biBlcnJvciJ9fXZhciBkPWU9Pih7bWluOjAsbWF4OjIqKmUtMX0pLGg9e21pbjowLG1heDoxfSxfPXttaW46MCxtYXg6MjU1fSxsPXttaW46MCxtYXg6NjU1MzZ9LEE9e1g6e21pbjp2b2lkIDAsbWF4OnZvaWQgMH0sWTp7bWluOnZvaWQgMCxtYXg6dm9pZCAwfSxaOnttaW46dm9pZCAwLG1heDp2b2lkIDB9LEludGVuc2l0eTpsLFJldHVybk51bWJlcjpkKDMpLE51bWJlck9mUmV0dXJuczpkKDMpLFNjYW5EaXJlY3Rpb25GbGFnOmgsRWRnZU9mRmxpZ2h0TGluZTpoLENsYXNzaWZpY2F0aW9uOl8sU2NhbkFuZ2xlOnttaW46LTkwLG1heDo5MH0sU2NhbkFuZ2xlUmFuazp7bWluOi05MCxtYXg6OTB9LFVzZXJEYXRhOl8sUG9pbnRTb3VyY2VJZDpsLFNjYW5DaGFubmVsOmwsR3BzVGltZTp7bWluOjAsbWF4Ojk5OTl9LFJlZDpsLEdyZWVuOmwsQmx1ZTpsLFNjYW5uZXJDaGFubmVsOmQoMiksSW5mcmFyZWQ6bH07dmFyIHM9KGZ1bmN0aW9uKGUpe3JldHVybiBlW2UuVWludDg9MF09IlVpbnQ4IixlW2UuVWludDE2PTFdPSJVaW50MTYiLGVbZS5VaW50MzI9Ml09IlVpbnQzMiIsZVtlLkZsb2F0PTNdPSJGbG9hdCIsZVtlLkRvdWJsZT00XT0iRG91YmxlIixlfSkoc3x8e30pO2Z1bmN0aW9uIHkoZSl7c3dpdGNoKGUpe2Nhc2Ugcy5VaW50ODpjYXNlIHMuVWludDE2OmNhc2Ugcy5VaW50MzI6cmV0dXJuIDA7Y2FzZSBzLkZsb2F0OmNhc2Ugcy5Eb3VibGU6cmV0dXJufX1mdW5jdGlvbiBjKGUsbixvLGksdCxyKXtyZXR1cm57dHlwZTplLGRpbWVuc2lvbjpuLG5vcm1hbGl6ZWQ6bz8/ITEsaW50ZXJwcmV0YXRpb246aT8/InVua25vd24iLG1pbjp0Pz95KGUpLG1heDpyfX12YXIgTD17UE9TSVRJT05fQ0FSVEVTSUFOOmMocy5GbG9hdCwzKSxDT0xPUl9QQUNLRUQ6YyhzLlVpbnQ4LDQsITAsImNvbG9yIiksUkdCQV9QQUNLRUQ6YyhzLlVpbnQ4LDQsITAsImNvbG9yIiksUkdCX1BBQ0tFRDpjKHMuVWludDgsMywhMCwiY29sb3IiKSxOT1JNQUxfRkxPQVRTOmMocy5GbG9hdCwzKSxOT1JNQUw6YyhzLkZsb2F0LDMpLE5PUk1BTF9TUEhFUkVNQVBQRUQ6YyhzLlVpbnQ4LDIpLE5PUk1BTF9PQ1QxNjpjKHMuVWludDgsMiksSU5URU5TSVRZOmMocy5VaW50MTYsMSksQ0xBU1NJRklDQVRJT046YyhzLlVpbnQ4LDEsITEsImNsYXNzaWZpY2F0aW9uIiksUkVUVVJOX05VTUJFUjpjKHMuVWludDgsMSksTlVNQkVSX09GX1JFVFVSTlM6YyhzLlVpbnQ4LDEpLFNPVVJDRV9JRDpjKHMuVWludDE2LDEpLEdQU19USU1FOmMocy5Eb3VibGUsMSksU1BBQ0lORzpjKHMuRmxvYXQsMSksSU5ESUNFUzpjKHMuVWludDMyLDEpfTt2YXIgUz0oZSxuLG8pPT57bGV0IGk7c3dpdGNoKGUudHlwZSl7Y2FzZSBzLlVpbnQ4Omk9KHQscik9PnQuZ2V0VWludDgocik7YnJlYWs7Y2FzZSBzLlVpbnQxNjppPSh0LHIpPT50LmdldFVpbnQxNihyLCEwKTticmVhaztjYXNlIHMuVWludDMyOmk9KHQscik9PnQuZ2V0VWludDMyKHIsITApO2JyZWFrO2Nhc2Ugcy5GbG9hdDppPSh0LHIpPT50LmdldEZsb2F0MzIociwhMCk7YnJlYWs7Y2FzZSBzLkRvdWJsZTppPSh0LHIpPT50LmdldEZsb2F0NjQociwhMCk7YnJlYWt9cmV0dXJuKHQscixhKT0+e2Fbcl09aSh0LHIqbytuKX19LE49KGUsbixvKT0+KHQscixhKT0+e2xldCB1PXIqbytuLGY9dC5nZXRVaW50MzIodSswLCEwKSxtPXQuZ2V0VWludDMyKHUrNCwhMCksZz10LmdldFVpbnQzMih1KzgsITApO2FbciozKzBdPWYsYVtyKjMrMV09bSxhW3IqMysyXT1nfSxUPShlLG4sbyk9PihpLHQscik9PntsZXQgYT10Km8rbix1PWkuZ2V0VWludDgoYSswKSxmPWkuZ2V0VWludDgoYSsxKSxtPWkuZ2V0VWludDgoYSsyKTtyW3QqMyswXT11LHJbdCozKzFdPWYsclt0KjMrMl09bX07ZnVuY3Rpb24gRShlLG4pe2xldHtuYW1lOm8sb2Zmc2V0OmkscG90cmVlQXR0cmlidXRlOnR9PWU7aWYobz09PSJQT1NJVElPTl9DQVJURVNJQU4iKXJldHVybiBOKHQsaSxuKTtzd2l0Y2goZS5pbnRlcnByZXRhdGlvbil7Y2FzZSJjb2xvciI6cmV0dXJuIFQodCxpLG4pfXJldHVybiBTKHQsaSxuKX1mdW5jdGlvbiB3KGUsbixvLGkpe2xldCB0PWkqbztzd2l0Y2goZSl7Y2FzZSJzaWduZWQiOnN3aXRjaChuKXtjYXNlIDE6cmV0dXJuIG5ldyBJbnQ4QXJyYXkodCk7Y2FzZSAyOnJldHVybiBuZXcgSW50MTZBcnJheSh0KTtjYXNlIDQ6cmV0dXJuIG5ldyBJbnQzMkFycmF5KHQpfWJyZWFrO2Nhc2UidW5zaWduZWQiOnN3aXRjaChuKXtjYXNlIDE6cmV0dXJuIG5ldyBVaW50OEFycmF5KHQpO2Nhc2UgMjpyZXR1cm4gbmV3IFVpbnQxNkFycmF5KHQpO2Nhc2UgNDpyZXR1cm4gbmV3IFVpbnQzMkFycmF5KHQpfWJyZWFrO2Nhc2UiZmxvYXQiOnJldHVybiBuZXcgRmxvYXQzMkFycmF5KHQpfX1mdW5jdGlvbiBSKGUsbixvLGkpe2xldCB0PXcoZS50eXBlLGUuc2l6ZSxlLmRpbWVuc2lvbixpKSxyPUUoZSxvKTtmb3IobGV0IGE9MDthPGk7YSsrKXIobixhLHQpO3JldHVybnthcnJheTp0LmJ1ZmZlcixkaW1lbnNpb246ZS5kaW1lbnNpb24sbm9ybWFsaXplZDplLm5vcm1hbGl6ZWR9fWZ1bmN0aW9uIFUoZSxuLG8saSl7bGV0IHQ9bmV3IERhdGFWaWV3KGUpLHI9TWF0aC5mbG9vcihlLmJ5dGVMZW5ndGgvbiksYT1SKG8sdCxuLHIpLHU9aS5tYXAoZj0+UihmLHQsbixyKSk7cmV0dXJue3Bvc2l0aW9uQnVmZmVyOmEsYXR0cmlidXRlQnVmZmVyczp1fX1mdW5jdGlvbiB4KGUpe3RyeXtsZXR7YnVmZmVyOm4saW5mbzpvfT1lLnBheWxvYWQsaT1VKG4sby5wb2ludEJ5dGVTaXplLG8ucG9zaXRpb25BdHRyaWJ1dGUsby5hdHRyaWJ1dGVzKSx0PXtyZXF1ZXN0SWQ6ZS5pZCxwYXlsb2FkOntwb3NpdGlvbjppLnBvc2l0aW9uQnVmZmVyLGF0dHJpYnV0ZXM6aS5hdHRyaWJ1dGVCdWZmZXJzfX0scj1baS5wb3NpdGlvbkJ1ZmZlciwuLi5pLmF0dHJpYnV0ZUJ1ZmZlcnNdLm1hcChhPT5hLmFycmF5KTtwb3N0TWVzc2FnZSh0LHt0cmFuc2ZlcjpyfSl9Y2F0Y2gobil7cG9zdE1lc3NhZ2UocChlLmlkLG4pKX19b25tZXNzYWdlPWU9PntsZXQgbj1lLmRhdGE7c3dpdGNoKG4udHlwZSl7Y2FzZSJSZWFkQmluRmlsZSI6eChuKTticmVha319O30pKCk7Cg==')], {type: "text/javascript"})), {
type: 'module'
});
return worker;
}
export default class PotreeWorkerPool extends WorkerPool {
static _singleton = null;
static async create() {
this._singleton = new PotreeWorkerPool({
createWorker
});
return this._singleton;
}
static async get() {
if (this._singleton != null) {
return this._singleton;
}
return this.create();
}
}