UNPKG

@polygonjs/polygonjs

Version:

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

39 lines (38 loc) 1.47 kB
"use strict"; import { BaseSopOperation } from "./_Base"; import { InputCloneMode } from "../../../engine/poly/InputCloneMode"; import { AttribClass, ATTRIBUTE_CLASSES } from "../../../core/geometry/Constant"; import { ENTITY_CLASS_FACTORY } from "../../../core/geometry/CoreObjectFactory"; import { filterObjectsFromCoreGroup } from "../../../core/geometry/Mask"; export class AttribDeleteSopOperation extends BaseSopOperation { static type() { return "attribDelete"; } cook(inputCoreGroups, params) { const coreGroup = inputCoreGroups[0]; const objects = filterObjectsFromCoreGroup(coreGroup, params); const attribClass = ATTRIBUTE_CLASSES[params.class]; const factory = ENTITY_CLASS_FACTORY[attribClass]; if (factory) { for (const object of objects) { const entityClass = factory(object); const attribNames = entityClass.attributeNamesMatchingMask(object, params.name); for (const attribName of attribNames) { entityClass.deleteAttribute(object, attribName); } } } else { const attribNames = coreGroup.attributeNamesMatchingMask(params.name); for (const attribName of attribNames) { coreGroup.deleteAttribute(attribName); } } return coreGroup; } } AttribDeleteSopOperation.DEFAULT_PARAMS = { group: "", class: ATTRIBUTE_CLASSES.indexOf(AttribClass.POINT), name: "" }; AttribDeleteSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;