// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "SMassDebuggerViewBase.h" #include "MassDebuggerModel.h" #include "Widgets/SBoxPanel.h" struct FMassDebuggerProcessingGraph; struct FMassDebuggerModel; template class STreeView; struct FMassDebuggerProcessingGraphNodeTreeItem { FMassDebuggerProcessingGraphNodeTreeItem(const FMassDebuggerProcessingGraphNode& InNode); FMassDebuggerProcessingGraphNode Node; TArray> ChildItems; }; class SMassProcessingGraphView : public SMassDebuggerViewBase { public: SLATE_BEGIN_ARGS(SMassProcessingGraphView) : _OffsetPerLevel(10.f) {} SLATE_ATTRIBUTE(float, OffsetPerLevel) SLATE_END_ARGS() void Construct(const FArguments& InArgs, TSharedRef InDebuggerModel); void Display(TSharedPtr InProcessingGraphData); protected: void HandleSelectionChanged(TSharedPtr InNode, ESelectInfo::Type InSelectInfo); virtual void OnRefresh() override; virtual void OnProcessorsSelected(TConstArrayView> SelectedProcessors, ESelectInfo::Type) override; virtual void OnArchetypesSelected(TConstArrayView> SelectedArchetypes, ESelectInfo::Type) override; void ClearSelection(); void MarkDependencies(const FMassDebuggerProcessingGraphNode& Node); TSharedPtr ProcessingGraphData; TSharedPtr ItemsBox; float OffsetPerLevel; TArray> AllNodes; TArray> RootNodes; TSharedPtr>> GraphNodesTree; };