Explorar o código

新增Row节点

maboren hai 2 meses
pai
achega
a65d2deed5

+ 12 - 3
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/SEzAbleTreeViewRowWidget.cpp

@@ -4,14 +4,23 @@
 #include "SEzAbleTreeViewRowWidget.h"
 #include "SlateOptMacros.h"
 
+#define LOCTEXT_NAMESPACE "AbleTreeViewRow"
 BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
 void SEzAbleTreeViewRowWidget::Construct(const FArguments& InArgs, const TSharedRef<STableViewBase>& InOwnerTableView, TWeakObjectPtr<UEzAbilityState> InState, const TSharedPtr<SScrollBox>& ViewBox)
 {
-	/*
+	ConstructInternal(STableRow::FArguments()
+		.Padding(5.0f)
+		, InOwnerTableView);
+
 	ChildSlot
 	[
-		// Populate the widget
+		SNew(SButton)
+		.VAlign(VAlign_Center)
+		.HAlign(HAlign_Center)
+		.Text(LOCTEXT("SplitSprites", "Split Sprites"))
+		.ToolTipText(LOCTEXT("SplitSprites_Tooltip", "Splits all sprite instances into separate sprite actors or components"))
 	];
-	*/
+	
 }
 END_SLATE_FUNCTION_BUILD_OPTIMIZATION
+#undef LOCTEXT_NAMESPACE

+ 33 - 8
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/SEzAbleTreeViewWidget.cpp

@@ -20,9 +20,18 @@ void SEzAbleTreeViewWidget::Construct(const FArguments& InArgs)
 		.Orientation(Orient_Vertical)
 		.Thickness(FVector2D(12.0f, 12.0f));
 
-	TreeView = SNew(STreeView<TWeakObjectPtr<UEzAbilityState>>)
-		.OnGenerateRow(this, &SEzAbleTreeViewWidget::HandleGenerateRow);
+	UEzAbilityState* AbilityState = NewObject<UEzAbilityState>();
+	UEzAbilityState* AbilitySub = NewObject<UEzAbilityState>();
+	TestStrongState.Add(AbilityState);
+	TestState.Add(TestStrongState[0]);
 
+	TreeView = SNew(STreeView<TWeakObjectPtr<UEzAbilityState>>)
+		.OnGenerateRow(this, &SEzAbleTreeViewWidget::HandleGenerateRow)
+		.OnGetChildren(this, &SEzAbleTreeViewWidget::HandleGetChildren)
+		.TreeItemsSource(&TestState)
+		.ItemHeight(32)
+		.AllowOverscroll(EAllowOverscroll::No)
+		.ExternalScrollbar(VerticalScrollBar);
 	ChildSlot
 		[
 			SNew(SVerticalBox)
@@ -82,12 +91,9 @@ void SEzAbleTreeViewWidget::Construct(const FArguments& InArgs)
 			HorizontalScrollBar
 		]
 		];
-	/*
-	ChildSlot
-	[
-		// Populate the widget
-	];
-	*/
+
+
+	UpdateTree(true);
 }
 END_SLATE_FUNCTION_BUILD_OPTIMIZATION
 
@@ -102,4 +108,23 @@ TSharedRef<ITableRow> SEzAbleTreeViewWidget::HandleGenerateRow(TWeakObjectPtr<UE
 	return SNew(SEzAbleTreeViewRowWidget, InOwnerTableView, InState, ViewBox);
 }
 
+void SEzAbleTreeViewWidget::HandleGetChildren(TWeakObjectPtr<UEzAbilityState> InParent, TArray<TWeakObjectPtr<UEzAbilityState>>& OutChildren)
+{
+	UE_LOG(LogTemp, Log, TEXT("EZAbleTreeViewWidget HandleGetChildren"));
+}
+
+void SEzAbleTreeViewWidget::UpdateTree(bool bExpandPersistent /*= false*/)
+{
+
+// 	TArray<TWeakObjectPtr<UEzAbilityState>> TestState;
+// 	UEzAbilityState* AbilityState = NewObject<UEzAbilityState>();
+// 	TestState.Add(AbilityState);
+	TreeView->SetTreeItemsSource(&TestState);
+	//TreeView->GenerateNewWidget(AbilityState);
+	//TreeView->WidgetFromItem(AbilityState);
+	TreeView->RequestTreeRefresh();
+
+
+}
+
 #undef LOCTEXT_NAMESPACE

+ 5 - 1
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/SEzAbleTreeViewWidget.h

@@ -23,9 +23,13 @@ public:
 
 	// Treeview handlers
 	TSharedRef<ITableRow> HandleGenerateRow(TWeakObjectPtr<UEzAbilityState> InState, const TSharedRef<STableViewBase>& InOwnerTableView);
-
+	void HandleGetChildren(TWeakObjectPtr<UEzAbilityState> InParent, TArray<TWeakObjectPtr<UEzAbilityState>>& OutChildren);
+	void UpdateTree(bool bExpandPersistent = false);
 public:
 
 	TSharedPtr<STreeView<TWeakObjectPtr<UEzAbilityState>>> TreeView;
 	TSharedPtr<SScrollBox> ViewBox;
+
+	TArray<TWeakObjectPtr<UEzAbilityState>> TestState;
+	TArray<TObjectPtr<UEzAbilityState>>	TestStrongState;
 };