Blueprint Map "find" node that gets value as reference possible? Same as "Get (ref)" for arrays

The problem is the way the FIND node was programmed.


You can get the value of the struct as a ref like this (FVariantType is a custom *BlueprintType *that I created for myself to store anything from like ints, floats, arrays, rotators, transforms, etc):



UFUNCTION(Category="Variables|Variant", BlueprintCallable, CustomThunk, meta=(NotBlueprintThreadSafe, CustomStructureParam="AnyType", DisplayName="Set Variant = <?>",  CompactNodeTitle="SET<?>"))
    static FVariantType VAR_SetVariantValue_ANY( UPARAM(Ref)FVariantType &Variant, UProperty* AnyType );




DECLARE_FUNCTION(execVAR_SetVariantValue_ANY) {

    P_GET_OBJECT_REF_NO_PTR(FVariantType,Variant);

    Stack.StepCompiledIn<UProperty>(NULL);
    void* ValueAddr = Stack.MostRecentPropertyAddress;
    UProperty* AnyProp = Cast<UProperty>(Stack.MostRecentProperty);

    if (AnyProp==nullptr) {Stack.bArrayContextFailed=true; return;}

    P_FINISH;

    P_NATIVE_BEGIN;
      *(FVariantType*)RESULT_PARAM=___SetVariantValue_ANY(Variant,AnyProp,ValueAddr);
    P_NATIVE_END;
}




static FVariantType ___SetVariantValue_ANY(FVariantType &VAR, UProperty* ANYProp, const void* ValuePtr);

FVariantType UGenericLibrary::___SetVariantValue_ANY(FVariantType &VAR, UProperty* ANYProp, const void* ValuePtr) {

    const bool IsInt = ANYProp->IsA(UIntProperty::StaticClass());
    const bool IsFloat = ANYProp->IsA(UFloatProperty::StaticClass());
    const bool IsString = ANYProp->IsA(UStrProperty::StaticClass());
    //... etc


    if (IsInt) {
        UIntProperty* _Int = CastChecked<UIntProperty>(ANYProp);
        if (ValuePtr) {VAR.SetValue(_Int->GetPropertyValue(ValuePtr));}
        else {UE_LOG(LogTemp,Warning,TEXT("{ ___SetVariantValue_ANY }:  Caller context should reference a target Wildcard.
Unable to set Variant VALUE!"));}
    } else

    if (IsFloat) {
        UFloatProperty* _Float = CastChecked<UFloatProperty>(ANYProp);
        if (ValuePtr) {VAR.SetValue(_Float->GetPropertyValue(ValuePtr));}
        else {UE_LOG(LogTemp,Warning,TEXT("{ ___SetVariantValue_ANY }:  Caller context should reference a target Wildcard.
Unable to set Variant VALUE!"));}
    } // else etc etc...
}


[HR][/HR]
The key stuff you have to understand there is ***P_GET_OBJECT_REF_NO_PTR *** and the way ***(FVariantType)RESULT_PARAM= *** is declared inside the P_NATIVE_BEGIN body.
That is, FVariantType which is my custom struct then would be your own struct type that you want to modify.