Hi!
As an example, you can check out this:
void YourCustomEvaluateChooser(UChooserTable* Chooser, const FYourInputData& _InputData, FYourOutputData& _OutputData)
{
if (!IsValid(Chooser)) return;
const FInstancedStruct ResultInstances = UChooserFunctionLibrary::MakeEvaluateChooser(Chooser);
FChooserEvaluationContext EvaluationContext;
FInstancedStruct InputStruct;
InputStruct.InitializeAs<FYourInputData>();
FYourInputData& InputData = InputStruct.GetMutable<FYourInputData>();
InputData = _InputData;
EvaluationContext.Params.Add(InputStruct);
FInstancedStruct OutputStruct;
OutputStruct.InitializeAs<FYourOutputData>();
FYourOutputData& OutputData = OutputStruct.GetMutable<FYourOutputData>();
EvaluationContext.Params.Add(OutputStruct);
TArray<UObject*> EvaluateObjects = UChooserFunctionLibrary::EvaluateObjectChooserBaseMulti(
EvaluationContext,
ResultInstances,
UAnimMontage::StaticClass()
);
TArray<UAnimSequence*> Sequences;
for (UObject* Object : EvaluateObjects)
{
if (UAnimSequence* Sequence = Cast<UAnimSequence>(Object))
{
Sequences.Add(Sequence);
}
}
_OutputData = OutputData;
}