UNPKG

@polygonjs/polygonjs

Version:

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

28 lines (27 loc) 1.17 kB
"use strict"; 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); } } }