// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Widgets/Views/ITableRow.h" #include "Widgets/Views/SListView.h" #include "Widgets/Views/STableRow.h" #include "AnalyzedMaterialNode.h" class STableViewBase; class SVerticalBox; class SAnalyzedMaterialNodeWidgetItem : public SMultiColumnTableRow { public: static FName NAME_MaterialName; static FName NAME_NumberOfChildren; static FName NAME_BasePropertyOverrides; static FName NAME_MaterialLayerParameters; static FName NAME_StaticSwitchParameters; static FName NAME_StaticComponentMaskParameters; SLATE_BEGIN_ARGS(SAnalyzedMaterialNodeWidgetItem) : _MaterialInfoToVisualize() { } SLATE_ARGUMENT(FAnalyzedMaterialNodePtr, MaterialInfoToVisualize) SLATE_END_ARGS() public: /** * Construct child widgets that comprise this widget. * * @param InArgs Declaration from which to construct this widget. */ void Construct(const FArguments& InArgs, const TSharedRef& InOwnerTableView); // SMultiColumnTableRow overrides virtual TSharedRef GenerateWidgetForColumn(const FName& ColumnName) override; FReply FindInContentBrowser(); FText GetMaterialName() const { return CachedMaterialName; } FText GetNumberOfChildren() const { return FText::Format(FTextFormat::FromString(TEXT("{0}/{1}")), NumberOfChildren, TotalNumberOfChildren); } protected: /** The info about the widget that we are visualizing. */ FAnalyzedMaterialNodePtr MaterialInfo; FText CachedMaterialName; int TotalNumberOfChildren; int NumberOfChildren; FAssetData AssetData; TArray BasePropertyOverrideNodes; TArray StaticSwitchNodes; TArray StaticComponentMaskNodes; TArray StaticMaterialLayerNodes; }; template class SStaticParameterWidget : public SCompoundWidget { SLATE_BEGIN_ARGS(SStaticParameterWidget) : _StyleSet(&FCoreStyle::Get()), _StaticInfos() {} SLATE_ARGUMENT(const ISlateStyle*, StyleSet) SLATE_ARGUMENT(TArray, StaticInfos) SLATE_END_ARGS() public: SStaticParameterWidget() : bIsExpanded(false) { } virtual TSharedRef CreateRowWidget(NodeType RowData) { return SNullWidget::NullWidget; } virtual FText GetBaseText() const; void Construct(const FArguments& InArgs); TSharedPtr DataVerticalBox; TSharedPtr ExpanderButton; TArray StaticNodes; FReply DoExpand(); const FSlateBrush* GetExpanderImage() const; /** The slate style to use */ const ISlateStyle* StyleSet; bool bIsExpanded; }; class SBasePropertyOverrideWidget : public SStaticParameterWidget { virtual TSharedRef CreateRowWidget(FBasePropertyOverrideNodeRef RowData) override; virtual FText GetBaseText() const override; }; class SStaticSwitchParameterWidget : public SStaticParameterWidget { virtual TSharedRef CreateRowWidget(FStaticSwitchParameterNodeRef RowData) override; virtual FText GetBaseText() const override; }; class SStaticComponentMaskParameterWidget : public SStaticParameterWidget { virtual TSharedRef CreateRowWidget(FStaticComponentMaskParameterNodeRef RowData) override; virtual FText GetBaseText() const override; }; class SStaticMaterialLayerParameterWidget : public SStaticParameterWidget { public: virtual TSharedRef CreateRowWidget(FStaticMaterialLayerParameterNodeRef RowData) override; virtual FText GetBaseText() const override; };