diff --git a/Source/HoudiniEngineEditor/Private/HoudiniEngineEditorPrivatePCH.h b/Source/HoudiniEngineEditor/Private/HoudiniEngineEditorPrivatePCH.h index 16a27b5..9376c23 100644 --- a/Source/HoudiniEngineEditor/Private/HoudiniEngineEditorPrivatePCH.h +++ b/Source/HoudiniEngineEditor/Private/HoudiniEngineEditorPrivatePCH.h @@ -40,6 +40,7 @@ #define HOUDINI_PARAMETER_STRING_REF_TAG TEXT("unreal_ref") +#define HOUDINI_PARAMETER_STRING_REF_CLASS_TAG TEXT("unreal_ref_class") #define HOUDINI_PARAMETER_STRING_MULTILINE_TAG TEXT("editor") // URL used for bug reporting. diff --git a/Source/HoudiniEngineEditor/Private/HoudiniParameterDetails.cpp b/Source/HoudiniEngineEditor/Private/HoudiniParameterDetails.cpp index c67bff3..d49c479 100644 --- a/Source/HoudiniEngineEditor/Private/HoudiniParameterDetails.cpp +++ b/Source/HoudiniEngineEditor/Private/HoudiniParameterDetails.cpp @@ -2105,6 +2105,7 @@ FHoudiniParameterDetails::CreateWidgetString( IDetailCategoryBuilder & HouParame bool bIsMultiLine = false; bool bIsUnrealRef = false; + UClass* UnrealRefClass = UObject::StaticClass(); // Create the standard parameter name widget. CreateNameWidget(Row, InParams, true); @@ -2114,6 +2115,15 @@ FHoudiniParameterDetails::CreateWidgetString( IDetailCategoryBuilder & HouParame if (Tags.Contains(HOUDINI_PARAMETER_STRING_REF_TAG) && FCString::Atoi(*Tags[HOUDINI_PARAMETER_STRING_REF_TAG]) == 1) { bIsUnrealRef = true; + + if (Tags.Contains(HOUDINI_PARAMETER_STRING_REF_CLASS_TAG)) + { + UClass* FoundClass = FindObject(ANY_PACKAGE, *Tags[HOUDINI_PARAMETER_STRING_REF_CLASS_TAG]); + if (FoundClass != nullptr) + { + UnrealRefClass = FoundClass; + } + } } if (Tags.Contains(HOUDINI_PARAMETER_STRING_MULTILINE_TAG)) @@ -2179,8 +2189,10 @@ FHoudiniParameterDetails::CreateWidgetString( IDetailCategoryBuilder & HouParame VerticalBox->AddSlot().Padding(2, 2, 5, 2) [ SNew(SAssetDropTarget) - .OnIsAssetAcceptableForDrop_Lambda([](const UObject* InObject) - {return true; }) + .OnIsAssetAcceptableForDrop_Lambda([=](const UObject* InObject) + { + return InObject->IsA(UnrealRefClass); + }) .OnAssetDropped_Lambda([=](UObject* InObject) { // Get the asset reference string for this object @@ -2266,10 +2278,10 @@ FHoudiniParameterDetails::CreateWidgetString( IDetailCategoryBuilder & HouParame ] ]; - StaticMeshComboButton->SetOnGetMenuContent(FOnGetContent::CreateLambda([StaticMeshComboButton, ChangeStringValueAt, Idx, StringParams]() + StaticMeshComboButton->SetOnGetMenuContent(FOnGetContent::CreateLambda([UnrealRefClass, StaticMeshComboButton, ChangeStringValueAt, Idx, StringParams]() { TArray AllowedClasses; - AllowedClasses.Add(UObject::StaticClass()); + AllowedClasses.Add(UnrealRefClass); TArray< UFactory * > NewAssetFactories; return PropertyCustomizationHelpers::MakeAssetPickerWithMenu( FAssetData(nullptr),