UNPKG

@polygonjs/polygonjs

Version:

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

42 lines (41 loc) 1.44 kB
"use strict"; import { BaseSopOperation } from "./_Base"; import { InputCloneMode } from "../../../engine/poly/InputCloneMode"; import { isBooleanTrue } from "../../../core/Type"; export class SetChildrenSopOperation extends BaseSopOperation { static type() { return "setChildren"; } cook(inputCoreGroups, params) { var _a; const parentCoreGroup = inputCoreGroups[0]; const childrenCoreGroup = inputCoreGroups[1]; if (!childrenCoreGroup) { (_a = this.states) == null ? void 0 : _a.error.set("input 1 is invalid"); return this.createCoreGroupFromObjects([]); } const parentObjects = parentCoreGroup.threejsObjects(); const childrenObjects = childrenCoreGroup.threejsObjects(); let i = 0; if (isBooleanTrue(params.clearExistingChildren)) { for (const parentObject of parentObjects) { let child; while (child = parentObject.children[0]) { parentObject.remove(child); } } } for (const childObject of childrenObjects) { const parentObject = parentObjects[i] || parentObjects[parentObjects.length - 1]; if (childObject) { parentObject.add(childObject); } i++; } return this.createCoreGroupFromObjects(parentObjects); } } SetChildrenSopOperation.DEFAULT_PARAMS = { clearExistingChildren: true }; SetChildrenSopOperation.INPUT_CLONED_STATE = [InputCloneMode.FROM_NODE, InputCloneMode.FROM_NODE];