@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
28 lines (27 loc) • 1.17 kB
JavaScript
;
import { isBooleanTrue } from "../../../../../core/BooleanValue";
import { updateSelectionState } from "./GroupCommon";
export class GroupByExpressionHelper {
constructor(node) {
this.node = node;
}
async evalForEntities(allEntities, selectionStates) {
const param = this.node.p.expression;
if (param.hasExpression() && param.expressionController && param.expressionController.entitiesDependent()) {
await this._evalEntityDependentExpression(allEntities, selectionStates, param.expressionController);
} else {
this._evalExpressionsWithoutEntityDependentExpression(allEntities, selectionStates);
}
}
async _evalEntityDependentExpression(allEntities, selectionStates, expressionController) {
await expressionController.computeExpressionForEntities(allEntities, (entity, value) => {
updateSelectionState(selectionStates, entity, value);
});
}
_evalExpressionsWithoutEntityDependentExpression(allEntities, selectionStates) {
const value = isBooleanTrue(this.node.pv.expression);
for (const entity of allEntities) {
updateSelectionState(selectionStates, entity, value);
}
}
}