Flatlogic Bot 055d24df95 WORKING
2025-10-14 02:37:44 +00:00

81 lines
2.3 KiB
JavaScript

import DeveloperError from "../Core/DeveloperError.js";
import defaultValue from "../Core/defaultValue.js";
import defined from "../Core/defined.js";
import PrimitivePipeline from "../Scene/PrimitivePipeline.js";
import createTaskProcessorWorker from "./createTaskProcessorWorker.js";
/* global require */
const moduleCache = {};
async function getModule(moduleName, modulePath) {
let module = defaultValue(moduleCache[modulePath], moduleCache[moduleName]);
if (defined(module)) {
return module;
}
if (defined(modulePath)) {
// ignore moduleName and use the path to import
if (typeof exports === "object") {
// Use CommonJS-style require.
module = require(modulePath);
} else {
// Use ESM-style dynamic import
const result = await import(modulePath);
module = result.default;
}
moduleCache[modulePath] = module;
return module;
}
if (typeof exports === "object") {
// Use CommonJS-style require.
module = require(`Workers/${moduleName}`);
} else {
// Use ESM-style dynamic import
const result = defined(modulePath)
? await import(modulePath)
: await import(`./${moduleName}.js`);
module = result.default;
}
moduleCache[moduleName] = module;
return module;
}
async function createGeometry(parameters, transferableObjects) {
const subTasks = parameters.subTasks;
const length = subTasks.length;
const resultsOrPromises = new Array(length);
for (let i = 0; i < length; i++) {
const task = subTasks[i];
const geometry = task.geometry;
const moduleName = task.moduleName;
const modulePath = task.modulePath;
if (defined(moduleName) && defined(modulePath)) {
throw new DeveloperError("Must only set moduleName or modulePath");
}
if (defined(moduleName) || defined(modulePath)) {
resultsOrPromises[i] = getModule(
moduleName,
modulePath
).then((createFunction) => createFunction(geometry, task.offset));
} else {
// Already created geometry
resultsOrPromises[i] = geometry;
}
}
return Promise.all(resultsOrPromises).then(function (results) {
return PrimitivePipeline.packCreateGeometryResults(
results,
transferableObjects
);
});
}
export default createTaskProcessorWorker(createGeometry);