From 0c8aa5423d8dc24a3a2035f647d101c9fb04e4d3 Mon Sep 17 00:00:00 2001 From: getnamo Date: Wed, 4 Dec 2019 21:50:01 -0800 Subject: [PATCH] fix return value for struct with custom thunk --- GlobalEventSystem.uplugin | 2 +- .../Private/GlobalEventSystemBPLibrary.cpp | 21 +++---------------- .../Public/GlobalEventSystemBPLibrary.h | 9 +++++--- 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/GlobalEventSystem.uplugin b/GlobalEventSystem.uplugin index 7471584..2e350a5 100644 --- a/GlobalEventSystem.uplugin +++ b/GlobalEventSystem.uplugin @@ -1,7 +1,7 @@ { "FileVersion": 3, "Version": 1, - "VersionName": "0.3.0", + "VersionName": "0.3.1", "FriendlyName": "GlobalEventSystem", "Description": "Loosely coupled internal event system plugin for the unreal engine.", "Category": "Other", diff --git a/Source/GlobalEventSystem/Private/GlobalEventSystemBPLibrary.cpp b/Source/GlobalEventSystem/Private/GlobalEventSystemBPLibrary.cpp index b317208..bc049df 100644 --- a/Source/GlobalEventSystem/Private/GlobalEventSystemBPLibrary.cpp +++ b/Source/GlobalEventSystem/Private/GlobalEventSystemBPLibrary.cpp @@ -214,25 +214,10 @@ bool UGlobalEventSystemBPLibrary::Conv_PropToName(const FGESWildcardProperty& In } } -void UGlobalEventSystemBPLibrary::Conv_PropToStruct(const FGESWildcardProperty& InProp, UProperty*& OutStruct) +bool UGlobalEventSystemBPLibrary::Conv_PropToStruct(const FGESWildcardProperty& InProp, UProperty*& OutStruct) { - /*if (InProp.Property->IsA()) - { - UStructProperty* StructProperty = Cast(InProp.Property); - //OutStruct = InProp.Property; - //StructProperty->Struct-> - //StructProperty->ContainerPtrToValuePtrForDefaults(StructProperty->Struct); - //OutStruct->CopyCompleteValue(StructProperty->Value) - //TODO figure out how to copy... wait a minute we can do a custom thunk to get struct ptr! yay... - UE_LOG(LogTemp, Warning, TEXT("UStructProperty not supported due to lack of copy operation. TBC")); - return false; - } - else - { - UE_LOG(LogTemp, Warning, TEXT("UGlobalEventSystemBPLibrary::Conv_PropToStruct %s is not a Struct."), *InProp.Property->GetName()); - return false; - }*/ - //return false; + //doesn't get called due to custom thunk + return false; } bool UGlobalEventSystemBPLibrary::HandlePropToStruct(const FGESWildcardProperty& InProp, FGESWildcardProperty& OutProp) diff --git a/Source/GlobalEventSystem/Public/GlobalEventSystemBPLibrary.h b/Source/GlobalEventSystem/Public/GlobalEventSystemBPLibrary.h index 9e6976a..d186b92 100644 --- a/Source/GlobalEventSystem/Public/GlobalEventSystemBPLibrary.h +++ b/Source/GlobalEventSystem/Public/GlobalEventSystemBPLibrary.h @@ -81,7 +81,7 @@ class UGlobalEventSystemBPLibrary : public UBlueprintFunctionLibrary static bool Conv_PropToName(const FGESWildcardProperty& InProp, FName& OutName); UFUNCTION(BlueprintPure, CustomThunk, meta = (DisplayName = "To Struct (Wildcard Property)", CustomStructureParam = "OutStruct", BlueprintAutocast), Category = "Utilities|SocketIO") - static void Conv_PropToStruct(const FGESWildcardProperty& InProp, UProperty*& OutStruct); + static bool Conv_PropToStruct(const FGESWildcardProperty& InProp, UProperty*& OutStruct); UFUNCTION(BlueprintPure, meta = (DisplayName = "To Object (Wildcard Property)", BlueprintAutocast), Category = "Utilities|SocketIO") static bool Conv_PropToObject(const FGESWildcardProperty& InProp, UObject*& OutObject); @@ -113,7 +113,7 @@ class UGlobalEventSystemBPLibrary : public UBlueprintFunctionLibrary DECLARE_FUNCTION(execConv_PropToStruct) { - //Stack.MostRecentProperty = nullptr; + Stack.MostRecentProperty = nullptr; FGESWildcardProperty InProp; FGESWildcardProperty OutProp; @@ -127,11 +127,14 @@ class UGlobalEventSystemBPLibrary : public UBlueprintFunctionLibrary OutProp.Property = ParameterProp; OutProp.PropertyPtr = PropPtr; + bool bDidCopy = false; P_FINISH; P_NATIVE_BEGIN; - bool bDidCopy = HandlePropToStruct(InProp, OutProp); + bDidCopy = HandlePropToStruct(InProp, OutProp); //todo: add return support P_NATIVE_END; + + *(bool*)RESULT_PARAM = bDidCopy; }