You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- Added icons and icon colors for ST nodes - Implemented icons for some common ST nodes - Small update to ST logic icons - Added icons to the task list in State treeview row, adjusted task list BG color to make icons visible - Fixed ST editor tabs icons and names (e.g. there were two tabs that had the same label) - Moved ST node picker to separate class - Moved category array customization to common helper function - Added node icons to the ST node picker - Add node button is not node selector too (simila to Niagara) - Consolidated the add button style across all lists - Cleaned up the node customization - Moved type selector, debug, and property controls into one menu at right - The combined menu can be also summoned using right click - Renaming now has to be triggered via the menu - Replacing node happens via menu - Most of the row was left "clickable" to later use it for selection - Improved the visualization and controls for the expression indentation - Cleaned up state customization - Moved parameters to own category (similar to the tree params) - Moved event to the enter conditions category - Cleaned up transition customization - Improved the transition display - Consolidated add button styles #jira UE-180608 #rb Juan.Portillo, Mieszko.Zielinski [CL 33030431 by mikko mononen in ue5-main branch]
131 lines
5.0 KiB
C++
131 lines
5.0 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "Widgets/Views/STableRow.h"
|
|
#include "Widgets/Views/SListView.h"
|
|
|
|
class STableViewBase;
|
|
class UStateTreeState;
|
|
enum class EStateTreeTransitionTrigger : uint8;
|
|
enum EStateTreeNodeFormatting : uint8;
|
|
struct FStateTreeStateLink;
|
|
struct FStateTreeEditorNode;
|
|
|
|
class UStateTreeEditorData;
|
|
class SStateTreeView;
|
|
class SInlineEditableTextBlock;
|
|
class SScrollBox;
|
|
class FStateTreeViewModel;
|
|
|
|
class SStateTreeViewRow : public STableRow<TWeakObjectPtr<UStateTreeState>>
|
|
{
|
|
public:
|
|
|
|
SLATE_BEGIN_ARGS(SStateTreeViewRow)
|
|
{
|
|
}
|
|
SLATE_END_ARGS()
|
|
|
|
void Construct(const FArguments& InArgs, const TSharedRef<STableViewBase>& InOwnerTableView, TWeakObjectPtr<UStateTreeState> InState, const TSharedPtr<SScrollBox>& ViewBox, TSharedPtr<FStateTreeViewModel> InStateTreeViewModel);
|
|
void RequestRename() const;
|
|
|
|
private:
|
|
TSharedRef<SHorizontalBox> CreateTasksWidget();
|
|
|
|
FSlateColor GetTitleColor(const float Alpha = 1.0f, const float Lighten = 0.0f) const;
|
|
FSlateColor GetActiveStateColor() const;
|
|
FSlateColor GetSubTreeMarkerColor() const;
|
|
FText GetStateDesc() const;
|
|
FText GetStateIDDesc() const;
|
|
|
|
EVisibility GetConditionVisibility() const;
|
|
EVisibility GetStateBreakpointVisibility() const;
|
|
FText GetStateBreakpointTooltipText() const;
|
|
|
|
const FSlateBrush* GetSelectorIcon() const;
|
|
FText GetSelectorTooltip() const;
|
|
FText GetStateTypeTooltip() const;
|
|
|
|
const FStateTreeEditorNode* GetTaskNodeByID(FGuid TaskID) const;
|
|
EVisibility GetTaskIconVisibility(FGuid TaskID) const;
|
|
const FSlateBrush* GetTaskIcon(FGuid TaskID) const;
|
|
FSlateColor GetTaskIconColor(FGuid TaskID) const;
|
|
FText GetTaskDesc(FGuid TaskID, EStateTreeNodeFormatting Formatting) const;
|
|
|
|
EVisibility GetTasksVisibility() const;
|
|
|
|
EVisibility GetLinkedStateVisibility() const;
|
|
FText GetLinkedStateDesc() const;
|
|
|
|
bool GetStateWarnings(FText* OutText) const;
|
|
EVisibility GetWarningsVisibility() const;
|
|
FText GetWarningsTooltipText() const;
|
|
|
|
EVisibility GetCompletedTransitionVisibility() const;
|
|
EVisibility GetCompletedTransitionBreakpointVisibility() const;
|
|
FText GetCompletedTransitionsDesc() const;
|
|
FText GetCompletedTransitionWithBreakpointDesc() const;
|
|
const FSlateBrush* GetCompletedTransitionsIcon() const;
|
|
|
|
EVisibility GetSucceededTransitionVisibility() const;
|
|
EVisibility GetSucceededTransitionBreakpointVisibility() const;
|
|
FText GetSucceededTransitionDesc() const;
|
|
FText GetSucceededTransitionWithBreakpointDesc() const;
|
|
const FSlateBrush* GetSucceededTransitionIcon() const;
|
|
|
|
EVisibility GetFailedTransitionVisibility() const;
|
|
EVisibility GetFailedTransitionBreakpointVisibility() const;
|
|
FText GetFailedTransitionDesc() const;
|
|
FText GetFailedTransitionWithBreakpointDesc() const;
|
|
const FSlateBrush* GetFailedTransitionIcon() const;
|
|
|
|
EVisibility GetConditionalTransitionsVisibility() const;
|
|
EVisibility GetConditionalTransitionsBreakpointVisibility() const;
|
|
FText GetConditionalTransitionsDesc() const;
|
|
FText GetConditionalTransitionsWithBreakpointDesc() const;
|
|
|
|
enum class ETransitionDescRequirement : uint8
|
|
{
|
|
Any,
|
|
RequiredTrue,
|
|
RequiredFalse,
|
|
};
|
|
|
|
/**
|
|
* Filtering options used to build the description of the transitions.
|
|
* The default setup includes only enabled transition,
|
|
* with or without breakpoints and requires exact trigger match (no partial mask)
|
|
*/
|
|
struct FTransitionDescFilterOptions
|
|
{
|
|
FTransitionDescFilterOptions() {};
|
|
ETransitionDescRequirement Enabled = ETransitionDescRequirement::RequiredTrue;
|
|
ETransitionDescRequirement WithBreakpoint = ETransitionDescRequirement::Any;
|
|
bool bUseMask = false;
|
|
};
|
|
|
|
static FText GetLinkDescription(const FStateTreeStateLink& Link);
|
|
FText GetTransitionsDesc(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger, const FTransitionDescFilterOptions FilterOptions = {}) const;
|
|
const FSlateBrush* GetTransitionsIcon(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger, const FTransitionDescFilterOptions FilterOptions = {}) const;
|
|
EVisibility GetTransitionsVisibility(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger) const;
|
|
EVisibility GetTransitionsBreakpointVisibility(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger) const;
|
|
|
|
bool HasParentTransitionForTrigger(const UStateTreeState& State, const EStateTreeTransitionTrigger Trigger) const;
|
|
|
|
bool IsRootState() const;
|
|
bool IsLeafState() const;
|
|
bool IsStateSelected() const;
|
|
|
|
void HandleNodeLabelTextCommitted(const FText& NewLabel, ETextCommit::Type CommitType) const;
|
|
|
|
FReply HandleDragDetected(const FGeometry&, const FPointerEvent&) const;
|
|
TOptional<EItemDropZone> HandleCanAcceptDrop(const FDragDropEvent& DragDropEvent, EItemDropZone DropZone, TWeakObjectPtr<UStateTreeState> TargetState) const;
|
|
FReply HandleAcceptDrop(const FDragDropEvent& DragDropEvent, EItemDropZone DropZone, TWeakObjectPtr<UStateTreeState> TargetState) const;
|
|
|
|
TSharedPtr<FStateTreeViewModel> StateTreeViewModel;
|
|
TWeakObjectPtr<UStateTreeState> WeakState;
|
|
TWeakObjectPtr<UStateTreeEditorData> WeakEditorData;
|
|
TSharedPtr<SInlineEditableTextBlock> NameTextBlock;
|
|
};
|