Files
UnrealEngineUWP/Engine/Plugins/Runtime/StateTree/Source/StateTreeEditorModule/Private/SStateTreeViewRow.h
mikko mononen f6770cf154 StateTree: Parametrized states
- Added specific "subtree" states which can be linked to via a "linked" state
- Subtrees can only bind data back to the their root state (or tree "global" data)
- Added property bag based parameters to subtree and linked states
- Update (transient) property bag structs before resolving property paths
- Linked states reflect their parameters from the state they link to
- Added property binding to and from parameters
- Relaxed the property binding to fail if the source data is not available
- Allow enter conditions to bind to tasks, and fail the expression if trying to access unaccessible data
- Added icon for linked and subtree states
- Added source type for all binding source structs
- Added UStateTreeEditorData::VisitHierarchy to simplify iterating over all states

#jira UE-147507
#rb Yoan.StAmant
#preflight 626a47182d28b9d0f77223f5

[CL 19954567 by mikko mononen in ue5-main branch]
2022-04-28 03:54:07 -04:00

79 lines
2.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "StateTreeState.h"
#include "Widgets/Views/STableRow.h"
class UStateTreeEditorData;
class SStateTreeView;
class SInlineEditableTextBlock;
class FStateTreeViewModel;
class SStateTreeViewRow : public STableRow<UStateTreeState*>
{
public:
SLATE_BEGIN_ARGS(SStateTreeViewRow)
{
}
SLATE_END_ARGS()
void Construct(const FArguments& InArgs, const TSharedRef<STableViewBase>& InOwnerTableView, UStateTreeState* InState, TSharedRef<FStateTreeViewModel> InStateTreeViewModel);
void RequestRename();
private:
FSlateColor GetTitleColor() const;
FText GetStateDesc() const;
EVisibility GetConditionVisibility() const;
EVisibility GetSelectorVisibility() const;
FText GetSelectorDesc() const;
EVisibility GetEvaluatorsVisibility() const;
FText GetEvaluatorsDesc() const;
EVisibility GetTasksVisibility() const;
FText GetTasksDesc() const;
EVisibility GetLinkedStateVisibility() const;
FText GetLinkedStateDesc() const;
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;
FText GetTransitionsDesc(const UStateTreeState& State, const EStateTreeTransitionEvent Event) const;
FText GetTransitionsIcon(const UStateTreeState& State, const EStateTreeTransitionEvent Event) const;
EVisibility GetTransitionsVisibility(const UStateTreeState& State, const EStateTreeTransitionEvent Event) const;
bool HasParentTransitionForEvent(const UStateTreeState& State, const EStateTreeTransitionEvent Event) const;
bool IsRootState() const;
bool IsSelected() const;
bool VerifyNodeTextChanged(const FText& NewLabel, FText& OutErrorMessage);
void HandleNodeLabelTextCommitted(const FText& NewLabel, ETextCommit::Type CommitType);
FReply HandleDragDetected(const FGeometry&, const FPointerEvent&);
TOptional<EItemDropZone> HandleCanAcceptDrop(const FDragDropEvent& DragDropEvent, EItemDropZone DropZone, UStateTreeState* TargetState);
FReply HandleAcceptDrop(const FDragDropEvent& DragDropEvent, EItemDropZone DropZone, UStateTreeState* TargetState);
TSharedPtr<FStateTreeViewModel> StateTreeViewModel;
TWeakObjectPtr<UStateTreeState> WeakState;
TSharedPtr<SInlineEditableTextBlock> NameTextBlock;
};