13#include "../Editor/ConditionPreset/ConditionPresetRegistry.h"
43 const std::vector<NodeConditionRef>& conditions,
54 if (conditions.empty())
56 outErrorMsg =
"ConditionPresetEvaluator::EvaluateConditionChain: Empty condition chain.";
68 for (
size_t i = 0;
i < conditions.size(); ++
i)
80 outErrorMsg =
"ConditionPresetEvaluator::EvaluateConditionChain: "
81 "Preset not found in registry: '" +
condRef.presetID +
"'";
141 outErrorMsg =
"ConditionPresetEvaluator::EvaluateConditionChain: "
142 "Unknown LogicalOp.";
172 if (!
env.GetBlackboardVariable(
operand.stringValue,
v))
174 outErrorMsg =
"ConditionPresetEvaluator: Blackboard variable not found: '"
185 if (!
env.GetDynamicPinValue(
operand.stringValue,
v))
187 outErrorMsg =
"ConditionPresetEvaluator: Dynamic pin value not found for pin: '"
196 outErrorMsg =
"ConditionPresetEvaluator: Unknown operand mode.";
217 outErrorMsg =
"ConditionPresetEvaluator: Unknown ComparisonOp.";
Stateless runtime evaluator for ConditionPreset expressions.
ComponentTypeID GetComponentTypeID_Static()
static bool Evaluate(const ConditionPreset &preset, RuntimeEnvironment &env, std::string &outErrorMsg)
Evaluates a single ConditionPreset and returns the boolean result.
static bool EvaluateOperator(float left, ComparisonOp op, float right, std::string &outErrorMsg)
Applies a ComparisonOp to two float values.
static bool EvaluateConditionChain(const std::vector< NodeConditionRef > &conditions, const ConditionPresetRegistry ®istry, RuntimeEnvironment &env, std::string &outErrorMsg)
Evaluates a chain of conditions combined with logical operators (AND/OR).
static bool ResolveOperand(const Operand &operand, RuntimeEnvironment &env, std::string &outErrorMsg, float &outValue)
Resolves an Operand to its runtime float value.
Manages the global pool of ConditionPreset objects.
Provides Blackboard variable values and dynamic pin values at runtime.
< Provides AssetID and INVALID_ASSET_ID
@ Start
First condition in the list (no logical combinator)
@ Variable
References a blackboard variable by ID (string key)
@ Const
Literal numeric constant (double)
@ Pin
External data input pin on the node (identified by label)
ComparisonOp
The relational operator used in a ConditionPreset.
A globally-stored, reusable condition expression.
One entry in a NodeBranch's conditions list.
One side of a ConditionPreset comparison expression.