UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

38 lines (37 loc) 1.41 kB
"use strict"; 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); } }); } } } }