A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
DlgDataDisplayTreeNode.h
Go to the documentation of this file.
1// Copyright Csaba Molnar, Daniel Butum. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
5#include "GameFramework/Actor.h"
6
8
9// Type of Variable
11{
12 Default = 0,
13
14 Event,
16
17 Integer,
18 Float,
19 Bool,
20 FName,
21
27};
28
29// Type of Text
31{
32 Default = 0,
33
34 Actor,
36};
37
38// Type of Category
40{
41 Default = 0,
42
43 Event,
46};
47
49
50/* Base class node for all Nodes in the DlgDataDisplayWindow */
51class DLGSYSTEM_API FDlgDataDisplayTreeNode : public FDlgTreeViewNode<FDlgDataDisplayTreeNode>
52{
55public:
56 FDlgDataDisplayTreeNode(const FText& InDisplayText, const TSharedPtr<Self>& InParent);
57
58 // Categories
59 EDlgDataDisplayTextTreeNodeType GetTextType() const { return TextType; }
61
63 virtual TWeakObjectPtr<AActor> GetParentActor() const;
64
65 virtual bool IsText() const { return TextType != EDlgDataDisplayTextTreeNodeType::Default; }
66 virtual bool IsCategory() const { return false; }
67 virtual bool IsSeparator() const { return false; }
68
70 virtual bool IsEqual(const Self& Other)
71 {
72 return TextType == Other.GetTextType() &&
73 CategoryType == Other.GetCategoryType() &&
74 DisplayText.EqualTo(Other.GetDisplayText()) &&
75 GetParentActor() == Other.GetParentActor();
76 }
77
78 bool operator==(const Self& Other)
79 {
80 return IsEqual(Other);
81 }
82
83protected:
84 // FDlgTreeViewNode Interface
85 void PostFilterPathsToNodes(const TSharedPtr<Self>& Child) override
86 {
87 Super::PostFilterPathsToNodes(Child);
88
89 // Hide separators
90 if (Child->IsSeparator())
91 {
92 Child->SetIsVisible(false);
93 }
94 }
95 void PostBuildPathToTopMostParent(const TSharedPtr<Self>& CurrentParentNode) override
96 {
97 Super::PostBuildPathToTopMostParent(CurrentParentNode);
98 check(!CurrentParentNode->IsSeparator());
99 }
100 bool FilterIsChildVisible(const TSharedPtr<Self>& GrandChild) override
101 {
102 return !GrandChild->IsSeparator() && !GrandChild->IsCategory() && Super::FilterIsChildVisible(GrandChild);
103 }
104 bool FilterDoesChildContainText(const TSharedPtr<Self>& Child, const FString& InSearch) override
105 {
106 return !Child->IsSeparator() && Super::FilterDoesChildContainText(Child, InSearch);
107 }
108
109protected:
110 // Specific category type, only used if Type is Category.
112
113 // Specific text type, only used if the Type is Text.
115};
116
117
125
126
129{
131public:
133 const FText& InDisplayText,
134 const TSharedPtr<FDlgDataDisplayTreeNode>& InParent,
135 TWeakObjectPtr<AActor> InActor
136 );
137
139 TWeakObjectPtr<AActor> GetParentActor() const override;
142protected:
144 TWeakObjectPtr<AActor> Actor;
145};
146
147
150{
152public:
154 const FText& InDisplayText,
155 const TSharedPtr<FDlgDataDisplayTreeNode>& InParent,
157 );
158
159 bool IsText() const override { return false; }
160 bool IsCategory() const override { return CategoryType != EDlgDataDisplayCategoryTreeNodeType::Default; }
161};
162
163
166{
169public:
171 const FText& InDisplayText,
172 const TSharedPtr<FDlgDataDisplayTreeNode>& InParent,
173 FName InVariableName,
175 );
176
177 // VariableName:
178 FName GetVariableName() const { return VariableName; }
179
180 // VariableValue:
181 void SetVariableValue(const FString& InVariableValue) { VariableValue = InVariableValue; }
182 FString GetVariableValue() const { return VariableValue; }
183
184 // VariableType:
186
187 bool IsEqual(const Super& Other) override
188 {
189 if (const Self* OtherSelf = static_cast<const Self*>(&Other))
190 {
191 return VariableName == OtherSelf->GetVariableName() &&
192 VariableType == OtherSelf->GetVariableType() &&
193 VariableValue == OtherSelf->GetVariableValue() &&
194 Super::IsEqual(Other);
195 }
196 return false;
197 }
198
199protected:
201 FName VariableName = NAME_None;
202
205
208};
EDlgDataDisplayVariableTreeNodeType
EDlgDataDisplayTextTreeNodeType
EDlgDataDisplayCategoryTreeNodeType
EDlgDataDisplayCategoryTreeNodeType GetCategoryType() const
bool FilterIsChildVisible(const TSharedPtr< Self > &GrandChild) override
virtual bool IsSeparator() const
bool operator==(const Self &Other)
virtual bool IsCategory() const
EDlgDataDisplayCategoryTreeNodeType CategoryType
EDlgDataDisplayTextTreeNodeType GetTextType() const
void PostFilterPathsToNodes(const TSharedPtr< Self > &Child) override
virtual bool IsEqual(const Self &Other)
void PostBuildPathToTopMostParent(const TSharedPtr< Self > &CurrentParentNode) override
FDlgDataDisplayTreeNode Self
EDlgDataDisplayTextTreeNodeType TextType
bool FilterDoesChildContainText(const TSharedPtr< Self > &Child, const FString &InSearch) override
EDlgDataDisplayVariableTreeNodeType VariableType
bool IsEqual(const Super &Other) override
void SetVariableValue(const FString &InVariableValue)
EDlgDataDisplayVariableTreeNodeType GetVariableType() const
FDlgDataDisplayTreeVariableNode Self