@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
38 lines (37 loc) • 1.21 kB
JavaScript
;
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;