JanakPRB
(Pranjal Bhattacharjee)
March 27, 2025, 4:13pm
1
I want to do this in C++.
I think I need to use this function in ChooserFunctionLibrary.h :
UFUNCTION(BlueprintCallable, meta = (BlueprintThreadSafe, BlueprintInternalUseOnly = “true”, DeterminesOutputType = “ObjectClass”))
static TArray<UObject*> EvaluateObjectChooserBaseMulti(UPARAM(Ref) FChooserEvaluationContext& Context,UPARAM(Ref) const FInstancedStruct& ObjectChooser, TSubclassOf ObjectClass, bool bResultIsClass = false);
but I am not able to figure out how. So, I guess I am asking for an example of how to use this function.
Or maybe there is another way of doing it. Either way, please help. Thanks.
DRICODYSS
(DRICODYSS)
April 5, 2025, 1:04pm
2
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
JanakPRB
(Pranjal Bhattacharjee)
April 11, 2025, 4:08pm
3
Thank you for your help. I will test this. Thank you again