Call Blueprint function from C++ and get the return value

Thanks! This thread helped me a lot.

My code with inputs and return value:

FName UMATRemapLiveLink::GetRemappedCurveName(ULiveLinkRemapAsset* RemapAsset, const FName& InCurveName) const
{
	UFunction* Func_GetRemappedCurveName = RemapAsset->GetClass()->FindFunctionByName(FName("GetRemappedCurveName"));
	if (!Func_GetRemappedCurveName)
	{
		return NAME_None;
	}

	FStructOnScope FuncParam(Func_GetRemappedCurveName);

	// Set input properties
	FNameProperty* InProp = CastField<FNameProperty>(Func_GetRemappedCurveName->FindPropertyByName(TEXT("CurveName")));
	if (!InProp)
	{
		return NAME_None;
	}
	InProp->SetPropertyValue_InContainer(FuncParam.GetStructMemory(), InCurveName);

	// Call function
	RemapAsset->ProcessEvent(Func_GetRemappedCurveName, FuncParam.GetStructMemory());

	// Get return property
	FNameProperty* OutProp = CastField<FNameProperty>(Func_GetRemappedCurveName->GetReturnProperty());
	if (!OutProp)
	{
		return NAME_None;
	}

	return OutProp->GetPropertyValue_InContainer(FuncParam.GetStructMemory());
}
2 Likes