1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- /* global require */
- import defined from '../Core/defined.js';
- import PrimitivePipeline from '../Scene/PrimitivePipeline.js';
- import when from '../ThirdParty/when.js';
- import createTaskProcessorWorker from './createTaskProcessorWorker.js';
- var moduleCache = {};
- function getModule(moduleName) {
- var module = moduleCache[moduleName];
- if (!defined(module)) {
- if (typeof exports === 'object') {
- // Use CommonJS-style require.
- moduleCache[module] = module = require('Workers/' + moduleName);
- } else {
- // Use AMD-style require.
- // in web workers, require is synchronous
- require(['Workers/' + moduleName], function(f) {
- module = f;
- moduleCache[module] = f;
- });
- }
- }
- return module;
- }
- function createGeometry(parameters, transferableObjects) {
- var subTasks = parameters.subTasks;
- var length = subTasks.length;
- var resultsOrPromises = new Array(length);
- for (var i = 0; i < length; i++) {
- var task = subTasks[i];
- var geometry = task.geometry;
- var moduleName = task.moduleName;
- if (defined(moduleName)) {
- var createFunction = getModule(moduleName);
- resultsOrPromises[i] = createFunction(geometry, task.offset);
- } else {
- //Already created geometry
- resultsOrPromises[i] = geometry;
- }
- }
- return when.all(resultsOrPromises, function(results) {
- return PrimitivePipeline.packCreateGeometryResults(results, transferableObjects);
- });
- }
- export default createTaskProcessorWorker(createGeometry);
|