UNPKG

@polygonjs/polygonjs

Version:

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

38 lines (37 loc) 1.21 kB
"use strict"; import { BaseSopOperation } from "./_Base"; import { InputCloneMode } from "../../../engine/poly/InputCloneMode"; import { isInGroup } from "../../../core/geometry/Mask"; import { SopType } from "../../poly/registers/nodes/types/Sop"; export class DeleteByNameSopOperation extends BaseSopOperation { static type() { return SopType.DELETE_BY_NAME; } cook(inputCoreGroups, params) { const coreGroup = inputCoreGroups[0]; const coreObjects = coreGroup.allCoreObjects(); const newObjects = []; const masks = params.group.split(" "); for (const coreObject of coreObjects) { let _toDelete = false; for (const mask of masks) { const _inGroup = isInGroup(mask, coreObject); if (_inGroup && !params.invert || !_inGroup && params.invert) { _toDelete = true; } } if (!_toDelete) { const object = coreObject.object(); if (object) { newObjects.push(object); } } } return this.createCoreGroupFromObjects(newObjects); } } DeleteByNameSopOperation.DEFAULT_PARAMS = { group: "", invert: false }; DeleteByNameSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;