From 8724eeae7ffccc68cd727c876191ce6eaef8efaa Mon Sep 17 00:00:00 2001 From: jamie dale Date: Sat, 16 Feb 2019 03:51:38 -0500 Subject: [PATCH] Hide BlueprintInternalUseOnly and CustomThunk functions from Python BlueprintInternalUseOnly functions are usually designed to be called via a K2 node wrapper, which may provide additional sanitization or data transformation (which Python is unaware of, so cannot mimic). CustomThunk functions rely on popping Bytecode data off the stack, but Python calls functions natively so there is no Bytecode available and these functions will crash. We hope to address CustomThunk support in the future by synthesizing the correct Bytecode. #jira UE-69818 #rb none #ROBOMERGE-OWNER: ryan.vance #ROBOMERGE-AUTHOR: jamie.dale #ROBOMERGE-SOURCE: CL 4951261 in //UE4/Release-4.22/... via CL 4951262 #ROBOMERGE-BOT: DEVVR (Main -> Dev-VR) [CL 5026799 by jamie dale in Dev-VR branch] --- .../Source/PythonScriptPlugin/Private/PyGenUtil.cpp | 6 ++++-- .../Source/PythonScriptPlugin/Private/PyGenUtil.h | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Engine/Plugins/Experimental/PythonScriptPlugin/Source/PythonScriptPlugin/Private/PyGenUtil.cpp b/Engine/Plugins/Experimental/PythonScriptPlugin/Source/PythonScriptPlugin/Private/PyGenUtil.cpp index 8e21e412f132..35bb8321fdd2 100644 --- a/Engine/Plugins/Experimental/PythonScriptPlugin/Source/PythonScriptPlugin/Private/PyGenUtil.cpp +++ b/Engine/Plugins/Experimental/PythonScriptPlugin/Source/PythonScriptPlugin/Private/PyGenUtil.cpp @@ -57,10 +57,11 @@ const FName NotBlueprintTypeMetaDataKey = TEXT("NotBlueprintType"); const FName BlueprintSpawnableComponentMetaDataKey = TEXT("BlueprintSpawnableComponent"); const FName BlueprintGetterMetaDataKey = TEXT("BlueprintGetter"); const FName BlueprintSetterMetaDataKey = TEXT("BlueprintSetter"); +const FName BlueprintInternalUseOnlyMetaDataKey = TEXT("BlueprintInternalUseOnly"); +const FName CustomThunkMetaDataKey = TEXT("CustomThunk"); const FName DeprecatedPropertyMetaDataKey = TEXT("DeprecatedProperty"); const FName DeprecatedFunctionMetaDataKey = TEXT("DeprecatedFunction"); const FName DeprecationMessageMetaDataKey = TEXT("DeprecationMessage"); -const FName CustomStructureParamMetaDataKey = TEXT("CustomStructureParam"); const FName HasNativeMakeMetaDataKey = TEXT("HasNativeMake"); const FName HasNativeBreakMetaDataKey = TEXT("HasNativeBreak"); const FName NativeBreakFuncMetaDataKey = TEXT("NativeBreakFunc"); @@ -1198,7 +1199,8 @@ bool IsScriptExposedFunction(const UFunction* InFunc) && InFunc->HasAnyFunctionFlags(FUNC_BlueprintCallable | FUNC_BlueprintEvent) && !InFunc->HasMetaData(BlueprintGetterMetaDataKey) && !InFunc->HasMetaData(BlueprintSetterMetaDataKey) - && !InFunc->HasMetaData(CustomStructureParamMetaDataKey) + && !InFunc->HasMetaData(BlueprintInternalUseOnlyMetaDataKey) + && !InFunc->HasMetaData(CustomThunkMetaDataKey) && !InFunc->HasMetaData(NativeBreakFuncMetaDataKey) && !InFunc->HasMetaData(NativeMakeFuncMetaDataKey); } diff --git a/Engine/Plugins/Experimental/PythonScriptPlugin/Source/PythonScriptPlugin/Private/PyGenUtil.h b/Engine/Plugins/Experimental/PythonScriptPlugin/Source/PythonScriptPlugin/Private/PyGenUtil.h index 5e48fa95f598..6bd271ca0f6c 100644 --- a/Engine/Plugins/Experimental/PythonScriptPlugin/Source/PythonScriptPlugin/Private/PyGenUtil.h +++ b/Engine/Plugins/Experimental/PythonScriptPlugin/Source/PythonScriptPlugin/Private/PyGenUtil.h @@ -46,7 +46,8 @@ namespace PyGenUtil extern const FName BlueprintSpawnableComponentMetaDataKey; extern const FName BlueprintGetterMetaDataKey; extern const FName BlueprintSetterMetaDataKey; - extern const FName CustomStructureParamMetaDataKey; + extern const FName BlueprintInternalUseOnlyMetaDataKey; + extern const FName CustomThunkMetaDataKey; extern const FName HasNativeMakeMetaDataKey; extern const FName HasNativeBreakMetaDataKey; extern const FName NativeBreakFuncMetaDataKey;