How can I evaluate a chooser in C++ and get it to output a struct and an array of animation assets ??

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;
}
1 Like