// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "SlateFwd.h" #include "Input/Reply.h" #include "Widgets/DeclarativeSyntaxSupport.h" #include "Widgets/SCompoundWidget.h" #include "PropertyEditorDelegates.h" #include "AdvancedPreviewSceneModule.h" #define UE_API ADVANCEDPREVIEWSCENE_API class FAdvancedPreviewScene; class IDetailsView; class UAssetViewerSettings; class UEditorPerProjectUserSettings; class SAdvancedPreviewDetailsTab : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SAdvancedPreviewDetailsTab) : _AdditionalSettings(nullptr) {} /** Additional settings object to display in the view */ SLATE_ARGUMENT(UObject*, AdditionalSettings) /** Customizations to use for this details tab */ SLATE_ARGUMENT(TArray, DetailCustomizations) /** Customizations to use for this details tab */ SLATE_ARGUMENT(TArray, PropertyTypeCustomizations) /** Delegates to use for this details tab */ SLATE_ARGUMENT(TArray, Delegates) SLATE_END_ARGS() public: /** **/ UE_API SAdvancedPreviewDetailsTab(); UE_API ~SAdvancedPreviewDetailsTab(); /** SWidget functions */ UE_API void Construct(const FArguments& InArgs, const TSharedRef& InPreviewScene); UE_API void Refresh(); protected: UE_API void CreateSettingsView(); UE_API void ComboBoxSelectionChanged(TSharedPtr NewSelection, ESelectInfo::Type /*SelectInfo*/); UE_API void UpdateSettingsView(); UE_API void UpdateProfileNames(); UE_API FReply AddProfileButtonClick(); UE_API FReply RemoveOrResetProfileButtonClick(); protected: UE_API void OnAssetViewerSettingsRefresh(const FName& InPropertyName); UE_API void OnAssetViewerSettingsPostUndo(); protected: /** Property viewing widget */ TSharedPtr SettingsView; TSharedPtr ProfileComboBox; TWeakPtr PreviewScenePtr; UAssetViewerSettings* DefaultSettings; UObject* AdditionalSettings; TArray> ProfileNames; int32 ProfileIndex; UE_API void OnPreviewSceneChanged(TSharedRef PreviewScene); FDelegateHandle RefreshDelegate; FDelegateHandle AddRemoveProfileDelegate; FDelegateHandle PostUndoDelegate; UEditorPerProjectUserSettings* PerProjectSettings; TArray DetailCustomizations; TArray PropertyTypeCustomizations; TArray Delegates; }; #undef UE_API