createGeometry.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*global define*/
  2. define([
  3. '../Core/defined',
  4. '../Scene/PrimitivePipeline',
  5. './createTaskProcessorWorker',
  6. 'require'
  7. ], function(
  8. defined,
  9. PrimitivePipeline,
  10. createTaskProcessorWorker,
  11. require) {
  12. "use strict";
  13. var moduleCache = {};
  14. function getModule(moduleName) {
  15. var module = moduleCache[moduleName];
  16. if (!defined(module)) {
  17. // in web workers, require is synchronous
  18. require(['./' + moduleName], function(f) {
  19. module = f;
  20. moduleCache[module] = f;
  21. });
  22. }
  23. return module;
  24. }
  25. function createGeometry(parameters, transferableObjects) {
  26. var results = [];
  27. var subTasks = parameters.subTasks;
  28. for (var i = 0; i < subTasks.length; i++) {
  29. var task = subTasks[i];
  30. var geometry = task.geometry;
  31. var moduleName = task.moduleName;
  32. if (defined(moduleName)) {
  33. var createFunction = getModule(moduleName);
  34. results.push(createFunction(geometry));
  35. } else {
  36. //Already created geometry
  37. results.push(geometry);
  38. }
  39. }
  40. return PrimitivePipeline.packCreateGeometryResults(results, transferableObjects);
  41. }
  42. return createTaskProcessorWorker(createGeometry);
  43. });