UNPKG

@polygonjs/polygonjs

Version:

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

67 lines (66 loc) 1.91 kB
"use strict"; import { BaseSopOperation } from "./_Base"; import { InputCloneMode } from "../../../engine/poly/InputCloneMode"; import { isBooleanTrue } from "../../../core/BooleanValue"; import { CoreMask } from "../../../core/geometry/Mask"; export class ObjectPropertiesSopOperation extends BaseSopOperation { static type() { return "objectProperties"; } cook(inputCoreGroups, params) { const coreGroup = inputCoreGroups[0]; const selectedObjects = CoreMask.filterObjects(coreGroup, params); for (let object of selectedObjects) { this._updateObject(object, params); } return coreGroup; } _updateObject(object, params) { if (isBooleanTrue(params.tname)) { object.name = params.name; } if (isBooleanTrue(params.trenderOrder)) { object.renderOrder = params.renderOrder; } if (isBooleanTrue(params.tfrustumCulled)) { object.frustumCulled = params.frustumCulled; } if (isBooleanTrue(params.tmatrixAutoUpdate)) { object.matrixAutoUpdate = params.matrixAutoUpdate; } if (isBooleanTrue(params.tvisible)) { object.visible = params.visible; } if (isBooleanTrue(params.tcastShadow)) { object.castShadow = params.castShadow; } if (isBooleanTrue(params.treceiveShadow)) { object.receiveShadow = params.receiveShadow; } } } ObjectPropertiesSopOperation.DEFAULT_PARAMS = { group: "", // name tname: false, name: "", // renderOrder trenderOrder: false, renderOrder: 0, // frustrumCulled tfrustumCulled: false, frustumCulled: true, // matrixAutoUpdate tmatrixAutoUpdate: false, matrixAutoUpdate: false, // visible tvisible: false, visible: true, // castShadow tcastShadow: false, castShadow: true, // receiveShadow treceiveShadow: false, receiveShadow: true }; ObjectPropertiesSopOperation.INPUT_CLONED_STATE = InputCloneMode.FROM_NODE;