// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "IPropertyTypeCustomization.h" #include "MediaPlateComponent.h" class IPropertyHandle; struct EVisibility; struct FMediaPlateResource; class FMediaPlateResourceCustomization : public IPropertyTypeCustomization { public: static TSharedRef MakeInstance(); //~ Begin IPropertyTypeCustomization virtual void CustomizeHeader(TSharedRef InStructPropertyHandle , FDetailWidgetRow& InHeaderRow , IPropertyTypeCustomizationUtils& InStructCustomizationUtils) override; virtual void CustomizeChildren(TSharedRef InPropertyHandle , IDetailChildrenBuilder& InChildBuilder , IPropertyTypeCustomizationUtils& InCustomizationUtils) override; //~ End IPropertyTypeCustomization private: TOptional GetAssetType() const; FString GetMediaPath() const; FString GetMediaBrowseDirectory() const; void OnAssetTypeChanged(TOptional InResourceType); void OnMediaPathPicked(const FString& InPickedPath); EVisibility GetAssetSelectorVisibility() const; EVisibility GetFileSelectorVisibility() const; EVisibility GetPlaylistSelectorVisibility() const; EVisibility GetMultipleValuesVisibility() const; TSharedPtr ResourceTypePropertyHandle; TSharedPtr MediaPlateResourcePropertyHandle; TSharedPtr ExternalMediaPathPropertyHandle; TSharedPtr MediaAssetPropertyHandle; TSharedPtr SourcePlaylistPropertyHandle; };