2021-09-28 13:33:17 -04:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "Widgets/Views/STableRow.h"
|
2023-03-14 13:35:46 -04:00
|
|
|
#include "Widgets/Views/SListView.h"
|
2021-09-28 13:33:17 -04:00
|
|
|
|
2023-01-19 00:48:07 -05:00
|
|
|
class STableViewBase;
|
|
|
|
|
class UStateTreeState;
|
|
|
|
|
enum class EStateTreeTransitionTrigger : uint8;
|
|
|
|
|
|
2021-09-28 13:33:17 -04:00
|
|
|
class UStateTreeEditorData;
|
|
|
|
|
class SStateTreeView;
|
|
|
|
|
class SInlineEditableTextBlock;
|
2022-06-30 03:06:38 -04:00
|
|
|
class SScrollBox;
|
2021-09-28 13:33:17 -04:00
|
|
|
class FStateTreeViewModel;
|
|
|
|
|
|
2022-09-30 11:31:57 -04:00
|
|
|
class SStateTreeViewRow : public STableRow<TWeakObjectPtr<UStateTreeState>>
|
2021-09-28 13:33:17 -04:00
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
SLATE_BEGIN_ARGS(SStateTreeViewRow)
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
SLATE_END_ARGS()
|
|
|
|
|
|
2022-09-30 11:31:57 -04:00
|
|
|
void Construct(const FArguments& InArgs, const TSharedRef<STableViewBase>& InOwnerTableView, TWeakObjectPtr<UStateTreeState> InState, const TSharedPtr<SScrollBox>& ViewBox, TSharedRef<FStateTreeViewModel> InStateTreeViewModel);
|
2022-09-01 09:06:53 -04:00
|
|
|
void RequestRename() const;
|
2021-09-28 13:33:17 -04:00
|
|
|
|
|
|
|
|
private:
|
2023-06-05 13:12:19 -04:00
|
|
|
TSharedRef<SHorizontalBox> CreateTasksWidget();
|
2021-09-28 13:33:17 -04:00
|
|
|
|
|
|
|
|
FSlateColor GetTitleColor() const;
|
2023-03-14 13:35:46 -04:00
|
|
|
FSlateColor GetActiveStateColor() const;
|
2023-04-12 07:59:16 -04:00
|
|
|
FSlateColor GetSubTreeMarkerColor() const;
|
2021-09-28 13:33:17 -04:00
|
|
|
FText GetStateDesc() const;
|
|
|
|
|
|
|
|
|
|
EVisibility GetConditionVisibility() const;
|
2023-03-14 13:35:46 -04:00
|
|
|
EVisibility GetBreakpointVisibility() const;
|
2023-04-12 07:59:16 -04:00
|
|
|
|
|
|
|
|
const FSlateBrush* GetSelectorIcon() const;
|
|
|
|
|
FText GetSelectorTooltip() const;
|
|
|
|
|
FText GetStateTypeTooltip() const;
|
2021-09-28 13:33:17 -04:00
|
|
|
|
|
|
|
|
EVisibility GetTasksVisibility() const;
|
|
|
|
|
FText GetTasksDesc() const;
|
|
|
|
|
|
2022-04-05 03:20:57 -04:00
|
|
|
EVisibility GetLinkedStateVisibility() const;
|
|
|
|
|
FText GetLinkedStateDesc() const;
|
|
|
|
|
|
2021-09-28 13:33:17 -04:00
|
|
|
EVisibility GetCompletedTransitionVisibility() const;
|
|
|
|
|
FText GetCompletedTransitionsDesc() const;
|
|
|
|
|
FText GetCompletedTransitionsIcon() const;
|
|
|
|
|
|
|
|
|
|
EVisibility GetSucceededTransitionVisibility() const;
|
|
|
|
|
FText GetSucceededTransitionDesc() const;
|
|
|
|
|
FText GetSucceededTransitionIcon() const;
|
|
|
|
|
|
|
|
|
|
EVisibility GetFailedTransitionVisibility() const;
|
|
|
|
|
FText GetFailedTransitionDesc() const;
|
|
|
|
|
FText GetFailedTransitionIcon() const;
|
|
|
|
|
|
|
|
|
|
EVisibility GetConditionalTransitionsVisibility() const;
|
|
|
|
|
FText GetConditionalTransitionsDesc() const;
|
|
|
|
|
|
2022-09-01 09:06:53 -04:00
|
|
|
FText GetTransitionsDesc(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger, const bool bUseMask = false) const;
|
|
|
|
|
FText GetTransitionsIcon(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger, const bool bUseMask = false) const;
|
|
|
|
|
EVisibility GetTransitionsVisibility(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger) const;
|
2021-09-28 13:33:17 -04:00
|
|
|
|
2022-09-01 09:06:53 -04:00
|
|
|
bool HasParentTransitionForTrigger(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger) const;
|
2021-09-28 13:33:17 -04:00
|
|
|
|
2022-04-28 03:54:07 -04:00
|
|
|
bool IsRootState() const;
|
2022-09-01 09:06:53 -04:00
|
|
|
bool IsStateSelected() const;
|
2021-09-28 13:33:17 -04:00
|
|
|
|
2022-09-01 09:06:53 -04:00
|
|
|
void HandleNodeLabelTextCommitted(const FText& NewLabel, ETextCommit::Type CommitType) const;
|
2021-09-28 13:33:17 -04:00
|
|
|
|
2022-09-01 09:06:53 -04:00
|
|
|
FReply HandleDragDetected(const FGeometry&, const FPointerEvent&) const;
|
2022-09-30 11:31:57 -04:00
|
|
|
TOptional<EItemDropZone> HandleCanAcceptDrop(const FDragDropEvent& DragDropEvent, EItemDropZone DropZone, TWeakObjectPtr<UStateTreeState> TargetState) const;
|
|
|
|
|
FReply HandleAcceptDrop(const FDragDropEvent& DragDropEvent, EItemDropZone DropZone, TWeakObjectPtr<UStateTreeState> TargetState) const;
|
2021-09-28 13:33:17 -04:00
|
|
|
|
|
|
|
|
TSharedPtr<FStateTreeViewModel> StateTreeViewModel;
|
|
|
|
|
TWeakObjectPtr<UStateTreeState> WeakState;
|
|
|
|
|
TSharedPtr<SInlineEditableTextBlock> NameTextBlock;
|
|
|
|
|
};
|