9#include "NodeHierarchy.generated.h"
57 return Transforms[
Index];
62 return Transforms[
Index];
67 Transforms[
Index] = NewTransform;
73 return GetNodeIndex(Nodes[
Index].ParentName);
78 return Nodes[
Index].ParentName;
88 const int32* NodeIndex = NodeNameToIndexMapping.Find(NodeName);
94 return Nodes[
Index].Name;
103 for (
int32 NodeIndex = 0; NodeIndex < Nodes.Num(); ++NodeIndex)
105 if (Nodes[NodeIndex].ParentName == OldName)
111 BuildNodeNameToIndexMapping();
117 if (NodeNameToIndexMapping.Contains(
InNodeName))
128 check(Nodes.Num() == Transforms.Num());
133 BuildNodeNameToIndexMapping();
141 Transforms.Empty(
Size);
142 NodeNameToIndexMapping.Reset();
158 return Nodes.IsValidIndex(
Index);
167 check(Nodes.Num() == Transforms.Num());
169 Nodes.RemoveAt(*NodeIndex);
170 Transforms.RemoveAt(*NodeIndex);
178 BuildNodeNameToIndexMapping();
185 NodeNameToIndexMapping.Empty();
187 for (
int32 NodeIndex = 0; NodeIndex < Nodes.Num(); ++NodeIndex)
193 check(Nodes.Num() == NodeNameToIndexMapping.Num());
214 template<
typename DataType>
217 template<
typename DataType>
233 for (
int32 NodeIndex = 0; NodeIndex <
Hierarchy.Nodes.Num(); ++NodeIndex)
235 if (
Hierarchy.Nodes[NodeIndex].ParentName == NodeName)
247 if (IsValidIndex(
Index))
249 return GetLocalTransform(
Index);
258 if (IsValidIndex(
Index))
260 return GetGlobalTransform(
Index);
269 if (IsValidIndex(
Index))
271 SetLocalTransform(
Index, NewTransform);
278 if (IsValidIndex(
Index))
280 SetGlobalTransform(
Index, NewTransform);
302 if (IsValidIndex(
Index))
336 check(!HasUserData());
340 template<
typename DataType>
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint32 Size
Definition VulkanMemory.cpp:4034
Definition NameTypes.h:617
Definition UnrealString.h.inl:34
U16 Index
Definition radfft.cpp:71
Definition NodeHierarchy.h:39
int32 GetParentIndex(int32 Index) const
Definition NodeHierarchy.h:71
int32 Num() const
Definition NodeHierarchy.h:151
FName GetParentName(int32 Index) const
Definition NodeHierarchy.h:76
void SetParentName(int32 Index, FName NewParent)
Definition NodeHierarchy.h:81
void Allocate(int32 Size)
Definition NodeHierarchy.h:145
int32 Add(const FName &InNodeName, const FName &InParentName, const FTransform &InTransform)
Definition NodeHierarchy.h:114
FTransform & GetTransform(int32 Index)
Definition NodeHierarchy.h:60
FName GetNodeName(int32 Index) const
Definition NodeHierarchy.h:92
void BuildNodeNameToIndexMapping()
Definition NodeHierarchy.h:183
int32 GetNodeIndex(const FName &NodeName) const
Definition NodeHierarchy.h:86
void Empty(int32 Size=0)
Definition NodeHierarchy.h:138
void SetTransform(int32 Index, const FTransform &NewTransform)
Definition NodeHierarchy.h:65
int32 Remove(const FName &InNodeName)
Definition NodeHierarchy.h:161
void SetNodeName(int32 Index, const FName &NewNodeName)
Definition NodeHierarchy.h:97
bool IsValidIndex(int32 Index) const
Definition NodeHierarchy.h:156
Definition NodeHierarchy.h:199
FName GetParentName(int32 Index) const
Definition NodeHierarchy.h:294
virtual void EmptyUserData(int32 Size=0)
Definition NodeHierarchy.h:401
virtual void SetGlobalTransform(int32 Index, const FTransform &NewTransform)
Definition NodeHierarchy.h:226
int32 Add(const FName &InNodeName, const FName &InParentName, const FTransform &InTransform)
Definition NodeHierarchy.h:334
virtual void RemoveUserData(int32 Index)
Definition NodeHierarchy.h:402
virtual void * GetUserDataImpl(int32 Index)
Definition NodeHierarchy.h:398
bool Contains(const FName InNodeName) const
Definition NodeHierarchy.h:390
virtual void Initialize()
Definition NodeHierarchy.h:284
int32 Add(const FName &InNodeName, const FName &InParentName, const FTransform &InTransform, const DataType &InNodeData)
Definition NodeHierarchy.h:341
TArray< FTransform > & GetTransforms()
Definition NodeHierarchy.h:211
const TArray< FNodeObject > & GetNodes() const
Definition NodeHierarchy.h:212
int32 GetParentIndex(int32 Index) const
Definition NodeHierarchy.h:289
void SetParentName(int32 Index, FName NewParent)
Definition NodeHierarchy.h:310
FName GetParentName(const FName &NodeName) const
Definition NodeHierarchy.h:299
int32 GetNum() const
Definition NodeHierarchy.h:380
FTransform GetGlobalTransformByName(const FName &NodeName) const
Definition NodeHierarchy.h:255
void SetLocalTransformByName(const FName &NodeName, const FTransform &NewTransform)
Definition NodeHierarchy.h:266
DataType & GetNodeData(int32 Index)
Definition NodeHierarchy.h:218
FName GetNodeName(int32 Index) const
Definition NodeHierarchy.h:324
virtual int32 AddUserDataImpl(const void *InData)
Definition NodeHierarchy.h:399
virtual const FTransform &virtual GetLocalTransform(int32 Index) const PURE_VIRTUAL(FNodeHierarchyWithUserData const FTransform &virtual GetGlobalTransform(int32 Index) const PURE_VIRTUAL(FNodeHierarchyWithUserData FTransform &virtual GetLocalTransform(int32 Index) PURE_VIRTUAL(FNodeHierarchyWithUserData FTransform &virtual GetGlobalTransform(int32 Index) PURE_VIRTUAL(FNodeHierarchyWithUserData void SetLocalTransform(int32 Index, const FTransform &NewTransform)
Definition NodeHierarchy.h:225
virtual bool HasUserData() const
Definition NodeHierarchy.h:403
void Remove(const FName &InNodeName)
Definition NodeHierarchy.h:355
const FNodeHierarchyData & GetHierarchy() const
Definition NodeHierarchy.h:209
int32 GetNodeIndex(const FName &InNodeName) const
Definition NodeHierarchy.h:319
void Empty(int32 Size=0)
Definition NodeHierarchy.h:369
void SetNodeName(int32 Index, const FName &NewNode)
Definition NodeHierarchy.h:329
const DataType & GetNodeData(int32 Index) const
Definition NodeHierarchy.h:215
FTransform GetLocalTransformByName(const FName &NodeName) const
Definition NodeHierarchy.h:244
const TArray< FTransform > & GetTransforms() const
Definition NodeHierarchy.h:210
bool IsValidIndex(int32 Index) const
Definition NodeHierarchy.h:385
void SetGlobalTransformByName(const FName &NodeName, const FTransform &NewTransform)
Definition NodeHierarchy.h:275
virtual const void * GetUserDataImpl(int32 Index) const
Definition NodeHierarchy.h:397
TArray< FName > GetChildren(int32 Index) const
Definition NodeHierarchy.h:229
virtual int32 GetNumUserData() const
Definition NodeHierarchy.h:400
Definition NodeHierarchy.h:14
FNodeObject(const FName &InName, const FName &InParentName)
Definition NodeHierarchy.h:22
Definition StructOpsTypeTraits.h:11
@ WithPureVirtual
Definition StructOpsTypeTraits.h:33
Definition StructOpsTypeTraits.h:46