@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
38 lines (37 loc) • 1.41 kB
JavaScript
;
import { arrayToSet } from "../../../ArrayUtils";
import { stringToIndices } from "../../../String";
import { coreObjectInstanceFactory } from "../../CoreObjectFactory";
import { CadLoaderSync } from "./CadLoaderSync";
const _indicesSet = /* @__PURE__ */ new Set();
const _indices = [];
export class CadEntityGroupCollection {
static traverseEntitiesInGroup(options) {
const { groupName, groupType, object, shape, traverseFunction, onEntityTraversed, onEntityNotInGroupTraversed } = options;
const oc = CadLoaderSync.oc();
if (groupName.trim() == "") {
traverseFunction(oc, shape, onEntityTraversed);
} else {
stringToIndices(groupName, _indices);
if (_indices.length != 0) {
arrayToSet(_indices, _indicesSet);
traverseFunction(oc, shape, (entity, i) => {
if (_indicesSet.has(i)) {
onEntityTraversed(entity, i);
}
});
} else {
const coreObject = coreObjectInstanceFactory(object);
const groupCollection = coreObject.groupCollection();
groupCollection.indicesSet(groupType, groupName, _indicesSet);
traverseFunction(oc, shape, (entity, i) => {
if (_indicesSet.has(i)) {
onEntityTraversed(entity, i);
} else if (onEntityNotInGroupTraversed) {
onEntityNotInGroupTraversed(entity, i);
}
});
}
}
}
}