@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
31 lines (30 loc) • 1.06 kB
JavaScript
;
import { isBooleanTrue } from "../../../../../core/BooleanValue";
export class ByExpressionHelper {
constructor(node) {
this.node = node;
}
async evalForEntities(entities) {
const param = this.node.p.expression;
if (this.node.p.expression.hasExpression() && param.expressionController && param.expressionController.entitiesDependent()) {
await this._evalEntityDependentExpression(entities, param.expressionController);
} else {
this._evalExpressionsWithoutEntityDependentExpression(entities);
}
}
async _evalEntityDependentExpression(entities, expressionController) {
await expressionController.computeExpressionForEntities(entities, (entity, value) => {
if (value) {
this.node.entitySelectionHelper.select(entity);
}
});
}
_evalExpressionsWithoutEntityDependentExpression(entities) {
const value = isBooleanTrue(this.node.pv.expression);
if (value) {
for (const entity of entities) {
this.node.entitySelectionHelper.select(entity);
}
}
}
}