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