// 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" class FAdvancedPreviewScene; class IDetailsView; class UAssetViewerSettings; class UEditorPerProjectUserSettings; class ADVANCEDPREVIEWSCENE_API 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: /** **/ SAdvancedPreviewDetailsTab(); ~SAdvancedPreviewDetailsTab(); /** SWidget functions */ void Construct(const FArguments& InArgs, const TSharedRef& InPreviewScene); void Refresh(); protected: void CreateSettingsView(); void ComboBoxSelectionChanged(TSharedPtr NewSelection, ESelectInfo::Type /*SelectInfo*/); void UpdateSettingsView(); void UpdateProfileNames(); FReply AddProfileButtonClick(); FReply RemoveOrResetProfileButtonClick(); protected: void OnAssetViewerSettingsRefresh(const FName& InPropertyName); void OnAssetViewerSettingsPostUndo(); protected: /** Property viewing widget */ TSharedPtr SettingsView; TSharedPtr ProfileComboBox; TWeakPtr PreviewScenePtr; UAssetViewerSettings* DefaultSettings; UObject* AdditionalSettings; TArray> ProfileNames; int32 ProfileIndex; void OnPreviewSceneChanged(TSharedRef PreviewScene); FDelegateHandle RefreshDelegate; FDelegateHandle AddRemoveProfileDelegate; FDelegateHandle PostUndoDelegate; UEditorPerProjectUserSettings* PerProjectSettings; TArray DetailCustomizations; TArray PropertyTypeCustomizations; TArray Delegates; };