@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
41 lines (40 loc) • 1.51 kB
JavaScript
;
import { AttribType } from "../../../../../core/geometry/Constant";
import { TypeAssert } from "../../../../poly/Assert";
import { CoreMask } from "../../../../../core/geometry/Mask";
import { defaultAttribValue } from "./Common";
export function addObjectAttributeWithoutExpression(attribType, coreGroup, params) {
const coreObjects = CoreMask.filterCoreObjects(coreGroup, params, coreGroup.allCoreObjects());
const attribName = params.name;
const allCoreObjects = coreGroup.allCoreObjects();
const defaultValue = defaultAttribValue(params);
if (defaultValue != null) {
for (let coreObject of allCoreObjects) {
if (!coreObject.hasAttribute(attribName)) {
coreObject.setAttribValue(attribName, defaultValue);
}
}
}
switch (attribType) {
case AttribType.NUMERIC:
_addNumericAttributeToObjects(coreObjects, params);
return;
case AttribType.STRING:
_addStringAttributeToObjects(coreObjects, params);
return;
}
TypeAssert.unreachable(attribType);
}
function _addNumericAttributeToObjects(coreObjects, params) {
const value = [params.value1, params.value2, params.value3, params.value4][params.size - 1];
const attribName = params.name;
for (let coreObject of coreObjects) {
coreObject.setAttribValue(attribName, value);
}
}
function _addStringAttributeToObjects(coreObjects, params) {
const value = params.string;
for (let coreObject of coreObjects) {
coreObject.setAttribValue(params.name, value);
}
}