// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "DiffControl.h" class SMaterialDiff; class UMaterialGraph; struct FMaterialDiffResultItem; enum class EAssetEditorCloseReason : uint8; /** Category list item for a MaterialGraph **/ struct FMaterialToDiff : public TSharedFromThis, IDiffControl { FMaterialToDiff(SMaterialDiff* DiffWidget, UMaterialGraph* OldGraph, UMaterialGraph* NewGraph, const FRevisionInfo& OldRevision, const FRevisionInfo& NewRevision); virtual ~FMaterialToDiff() override; /** Add widgets to the differences tree */ virtual void GenerateTreeEntries(TArray>& OutTreeEntries, TArray>& OutRealDifferences) override; /** Get old(left) graph*/ UMaterialGraph* GetOldGraph() const; /** Get new(right) graph*/ UMaterialGraph* GetNewGraph() const; /** Source for list view */ TArray> DiffListSource; TSharedPtr> FoundDiffs; /** Index of the first item in RealDifferences that was generated by this graph */ int32 RealDifferencesStartIndex = INDEX_NONE; private: /** Get tooltip for category */ FText GetToolTip(); /** Generate Widget for category list */ TSharedRef GenerateCategoryWidget(); /** Build up the Diff Source Array*/ void BuildDiffSourceArray(); /** Diff widget */ SMaterialDiff* DiffWidget; /** The old graph(left)*/ UMaterialGraph* OldGraph; /** The new graph(right)*/ UMaterialGraph* NewGraph; /** Description of Old and New graph*/ FRevisionInfo OldRevision; FRevisionInfo NewRevision; };