UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneEvaluationTree.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "Math/Range.h"
8#include "Math/RangeBound.h"
11#include "Misc/FrameNumber.h"
13#include "Templates/Function.h"
14#include "Templates/MemoryOps.h"
17
21template<typename DataType> struct TMovieSceneEvaluationTreeDataIterator;
22template<typename DataType> struct TMovieSceneEvaluationTreeFormatter;
23
26{
31 : EntryIndex(INDEX_NONE)
32 {}
33
37 bool IsValid() const
38 {
39 return EntryIndex != INDEX_NONE;
40 }
41
45 friend bool operator==(const FEvaluationTreeEntryHandle& A, const FEvaluationTreeEntryHandle& B) { return A.EntryIndex == B.EntryIndex; }
46
50 friend bool operator!=(const FEvaluationTreeEntryHandle& A, const FEvaluationTreeEntryHandle& B) { return A.EntryIndex != B.EntryIndex; }
51
55 friend FArchive& operator<<(FArchive& Ar, FEvaluationTreeEntryHandle& In) { return Ar << In.EntryIndex; }
56
57private:
58 template<typename T> friend struct TEvaluationTreeEntryContainer;
59 template<typename T> friend struct TMovieSceneEvaluationTreeFormatter;
61
63 int32 EntryIndex;
64};
65
73template<typename ElementType>
75{
83
89
95
102 void Add(FEvaluationTreeEntryHandle ID, ElementType&& Element);
103
111 void Insert(FEvaluationTreeEntryHandle ID, int32 Index, ElementType&& Element);
112
116 void Compact();
117
118
122 void Reset()
123 {
124 Entries.Reset();
125 Items.Reset();
126 }
127
132 {
133 if (Ar.IsSaving())
134 {
135 In.Compact();
136 }
137
139 return Ar << In.Entries << In.Items;
140 }
141
146 {
147 return A.Entries == B.Entries && A.Items == B.Items;
148 }
149
150private:
151
158 void ReserveEntry(FEvaluationTreeEntryHandle ID, int32 NewCapacity);
159
160 struct FEntry
161 {
163 int32 StartIndex;
165 int32 Size;
167 int32 Capacity;
168
169 friend FArchive& operator<<(FArchive& Ar, FEntry& In)
170 {
171 Ar << In.StartIndex << In.Size << In.Capacity;
172 return Ar;
173 }
174
178 friend bool operator==(const FEntry& A, const FEntry& B)
179 {
180 return A.StartIndex == B.StartIndex && A.Size == B.Size && A.Capacity == B.Capacity;
181 }
182 };
183
185 TArray<FEntry> Entries;
188};
189
207
212{
217
223
229
231 bool IsRoot() const
232 {
233 return *this == Root();
234 }
235
237 bool IsValid() const
238 {
239 return ChildrenHandle.IsValid() || Index == 0;
240 }
241
244 {
245 return ChildrenHandle;
246 }
247
250 {
251 return Index;
252 }
253
254private:
255
257 friend bool operator==(const FMovieSceneEvaluationTreeNodeHandle& A, const FMovieSceneEvaluationTreeNodeHandle& B) { return A.ChildrenHandle == B.ChildrenHandle && A.Index == B.Index; }
259 friend bool operator!=(const FMovieSceneEvaluationTreeNodeHandle& A, const FMovieSceneEvaluationTreeNodeHandle& B) { return A.ChildrenHandle != B.ChildrenHandle || A.Index != B.Index; }
261 friend FArchive& operator<<(FArchive& Ar, FMovieSceneEvaluationTreeNodeHandle& In) { return Ar << In.ChildrenHandle << In.Index; }
262
264 FEvaluationTreeEntryHandle ChildrenHandle;
266 int32 Index;
267};
268
308
329{
333
335
337
345
354
362
370
377 {
378 return RootNode;
379 }
380
390
396 {
398 return GetNode(Handle.GetHandle(), Handle.GetChildIndex());
399 }
400
408
416
424 {
425 return Handle.GetHandle().IsValid() ? ChildNodes.Get(Handle.GetHandle()).IsValidIndex(Handle.GetChildIndex()) : Handle.GetChildIndex() == 0;
426 }
427
433
440
445 {
446 return Ar << In.RootNode << In.ChildNodes;
447 }
448
449protected:
450
456 {
457 return ChildrenID.IsValid() ? ChildNodes.Get(ChildrenID)[Index] : RootNode;
458 }
459
465 {
466 return ChildrenID.IsValid() ? ChildNodes.Get(ChildrenID)[Index] : RootNode;
467 }
468
478
488
491
494};
495
500{
503
506
509 {
510 Iter(true);
511 return *this;
512 }
513
516 {
517 Iter(false);
518 return *this;
519 }
520
527
534
537 {
538 return CurrentRange;
539 }
540
543 {
544 return CurrentNodeHandle;
545 }
546
548 explicit operator bool() const
549 {
550 return CurrentNodeHandle.IsValid();
551 }
552
553private:
554
557 {
558 return Lhs.Tree == Rhs.Tree && Lhs.CurrentNodeHandle == Rhs.CurrentNodeHandle && Lhs.CurrentRange == Rhs.CurrentRange;
559 }
561 {
562 return Lhs.Tree != Rhs.Tree || Lhs.CurrentNodeHandle != Rhs.CurrentNodeHandle || Lhs.CurrentRange != Rhs.CurrentRange;
563 }
564
566 static bool CompareBound(bool bForwards, TRange<FFrameNumber> Range, TRangeBound<FFrameNumber> Bound)
567 {
568 return bForwards ? Range.GetLowerBound() == Bound : Range.GetUpperBound() == Bound;
569 }
570
573 {
575 }
576
579 {
581 }
582
584 MOVIESCENE_API void Iter(bool bForwards);
585
588
589private:
591 TRange<FFrameNumber> CurrentRange;
593 FMovieSceneEvaluationTreeNodeHandle CurrentNodeHandle;
595 const FMovieSceneEvaluationTree* Tree;
596};
597
601template<typename DataType>
603{
604
608 bool IsEmpty() const
609 {
610 return GetChildren(GetRootNode()).Num() == 0 && GetDataForSingleNode(GetRootNode()).Num() == 0;
611 }
612
628
639
647 {
649 return this->GetAllData(InNodeHandle).IsValid() == false;
650 });
651 }
652
660 {
662 return this->GetAllData(InNodeHandle).IsValid() && Predicate(InNodeHandle);
663 });
664 }
665
676
687
691 void Compact()
692 {
694 Data.Compact();
695 }
696
700 void Reset()
701 {
703 Data.Reset();
704 }
705
713
721
731
736 {
737 auto& BaseTree = static_cast<FMovieSceneEvaluationTree&>(In);
738 return Ar << BaseTree << In.Data;
739 }
740
745 {
746 return A.Data == B.Data && A.RootNode == B.RootNode && A.ChildNodes == B.ChildNodes;
747 }
748
749private:
750
753
754 friend struct TMovieSceneEvaluationTreeFormatter<DataType>;
755
756private:
758 struct FAddUniqueOperator : IMovieSceneEvaluationTreeNodeOperator
759 {
760 FAddUniqueOperator(TMovieSceneEvaluationTree<DataType>& InTree, DataType&& InDataToInsert) : Tree(InTree), DataToInsert(InDataToInsert) {}
761
762 virtual void operator()(FMovieSceneEvaluationTreeNode& InNode) const override
763 {
764 // If we haven't allocated data for this node yet, do so now
765 if (!InNode.DataID.IsValid())
766 {
767 InNode.DataID = Tree.Data.AllocateEntry(1);
768 }
769
770 TArrayView<const DataType> NodeData = Tree.Data.Get(InNode.DataID);
771 if (!NodeData.Contains(DataToInsert))
772 {
773 Tree.Data.Add(InNode.DataID, CopyTemp(DataToInsert));
774 }
775 }
777 DataType DataToInsert;
778 };
779
781 struct FAddOperator : IMovieSceneEvaluationTreeNodeOperator
782 {
783 FAddOperator(TMovieSceneEvaluationTree<DataType>& InTree, DataType&& InDataToInsert) : Tree(InTree), DataToInsert(InDataToInsert) {}
784
785 virtual void operator()(FMovieSceneEvaluationTreeNode& InNode) const override
786 {
787 // If we haven't allocated data for this node yet, do so now
788 if (!InNode.DataID.IsValid())
789 {
790 InNode.DataID = Tree.Data.AllocateEntry(1);
791 }
792
793 Tree.Data.Add(InNode.DataID, CopyTemp(DataToInsert));
794 }
796 DataType DataToInsert;
797 };
798};
799
803template<typename DataType>
805{
808 : Tree(&InTree)
809 , CurrentNode(StartNode.IsValid() ? &InTree.GetNode(StartNode) : nullptr)
810 , DataIndex(0)
811 {
812 // Walk up the tree until we find some data. We reset the iterator so begin() == end() where there is no data
813 while (CurrentNode && !InTree.GetDataForSingleNode(*CurrentNode).IsValidIndex(DataIndex))
814 {
815 CurrentNode = CurrentNode->Parent.IsValid() ? &InTree.GetNode(CurrentNode->Parent) : nullptr;
816 DataIndex = 0;
817 }
818 }
819
821 const DataType& operator*() const
822 {
823 return Tree->GetDataForSingleNode(*CurrentNode)[DataIndex];
824 }
825
827 const DataType* operator->() const
828 {
829 return &Tree->GetDataForSingleNode(*CurrentNode)[DataIndex];
830 }
831
833 bool IsValid() const
834 {
835 return CurrentNode && Tree->GetDataForSingleNode(*CurrentNode).IsValidIndex(DataIndex);
836 }
837
839 explicit operator bool() const
840 {
841 return IsValid();
842 }
843
846 {
847 ++DataIndex;
848
849 // Skip up parents while the data index is invalid
850 while (CurrentNode && !Tree->GetDataForSingleNode(*CurrentNode).IsValidIndex(DataIndex))
851 {
852 CurrentNode = CurrentNode->Parent.IsValid() ? &Tree->GetNode(CurrentNode->Parent) : nullptr;
853 DataIndex = 0;
854 }
855 return *this;
856 }
857
862 friend bool operator==(const TMovieSceneEvaluationTreeDataIterator<DataType>& A, const TMovieSceneEvaluationTreeDataIterator<DataType>& B) { return A.Tree == B.Tree && A.CurrentNode == B.CurrentNode && A.DataIndex == B.DataIndex; }
863 friend bool operator!=(const TMovieSceneEvaluationTreeDataIterator<DataType>& A, const TMovieSceneEvaluationTreeDataIterator<DataType>& B) { return A.Tree != B.Tree || A.CurrentNode != B.CurrentNode || A.DataIndex != B.DataIndex; }
864
865private:
869 const FMovieSceneEvaluationTreeNode* CurrentNode;
871 int32 DataIndex;
872};
873
874template<typename ElementType>
876{
877 FEvaluationTreeEntryHandle ID{ Entries.Num() };
878 Entries.Add(FEntry{Items.Num(), 0, InitialCapacity});
879 Items.SetNum(Items.Num() + InitialCapacity);
880 return ID;
881}
882
883template<typename ElementType>
885{
886 const FEntry& Entry = Entries[ID.EntryIndex];
887 return TArrayView<ElementType>(&Items[Entry.StartIndex], Entry.Size);
888}
889
890template<typename ElementType>
892{
893 const FEntry& Entry = Entries[ID.EntryIndex];
894 return TArrayView<const ElementType>(&Items[Entry.StartIndex], Entry.Size);
895}
896
897template<typename ElementType>
899{
900 FEntry& Entry = Entries[ID.EntryIndex];
901 if (Entry.Size+1 > Entry.Capacity)
902 {
903 ReserveEntry(ID, FMath::Max<int32>(Entry.Capacity*2, 2));
904 }
905
906 Items[Entry.StartIndex + Entry.Size] = MoveTemp(Element);
907 ++Entry.Size;
908}
909
910template<typename ElementType>
912{
913 FEntry& Entry = Entries[ID.EntryIndex];
914 if (Entry.Size+1 > Entry.Capacity)
915 {
916 ReserveEntry(ID, FMath::Max<int32>(Entry.Capacity*2, 2));
917 }
918
919 Index = FMath::Clamp(Index, 0, Entry.Capacity-1);
920
921 // Shift anything >= the insert index up one
922 if (Index <= Entry.Size-1)
923 {
924 ElementType* OldLocation = &Items[Entry.StartIndex + Index];
925 void* NewLocation = &Items[Entry.StartIndex + Index + 1];
926
927 RelocateConstructItems<ElementType>(NewLocation, OldLocation, Entry.Size - Index);
928 DefaultConstructItems<ElementType>((void*)OldLocation, 1);
929 }
930
931 // Assign the new element
932 ++Entry.Size;
933 Items[Entry.StartIndex + Index] = MoveTemp(Element);
934}
935
936template<typename ElementType>
938{
940
941 for (FEntry& Entry : Entries)
942 {
943 if (Entry.Size > 0)
944 {
945 const int32 OldIndex = Entry.StartIndex;
946 Entry.StartIndex = NewItems.Num();
947
948 NewItems.Append(&Items[OldIndex], Entry.Size);
949 }
950 else
951 {
952 Entry.StartIndex = INDEX_NONE;
953 }
954 Entry.Capacity = Entry.Size;
955 }
956
957 NewItems.Shrink();
958 Items = MoveTemp(NewItems);
959}
960
961template<typename ElementType>
963{
964 FEntry& Entry = Entries[ID.EntryIndex];
965
966 // Function should only be called to grow an entry
967 check(NewCapacity > Entry.Capacity);
968 Entry.Capacity = NewCapacity;
969
970 int32 NewStartIndex = Items.Num();
971
972 // Reallocate the items to the new entry location
973 Items.SetNum(Items.Num() + Entry.Capacity);
974
975 ElementType* OldLocation = &Items[Entry.StartIndex];
976 void* NewLocation = &Items[NewStartIndex];
977 RelocateConstructItems<ElementType>(NewLocation, OldLocation, Entry.Size);
978 DefaultConstructItems<ElementType>((void*)OldLocation, Entry.Size);
979
980 Entry.StartIndex = NewStartIndex;
981}
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
const bool
Definition NetworkReplayStreaming.h:178
UE_REWRITE T CopyTemp(T &Val)
Definition UnrealTemplate.h:554
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Size
Definition VulkanMemory.cpp:4034
Definition Archive.h:1208
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
Definition ArrayView.h:139
constexpr bool Contains(const ComparisonType &Item) const
Definition ArrayView.h:729
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition AssetRegistryState.h:50
Definition RangeBound.h:36
Definition Range.h:50
BoundsType GetUpperBound() const
Definition Range.h:274
BoundsType GetLowerBound() const
Definition Range.h:228
@ Tree
Definition ITypedTableView.h:40
bool operator==(const FCachedAssetKey &A, const FCachedAssetKey &B)
Definition AssetDataMap.h:501
U16 Index
Definition radfft.cpp:71
Definition MovieSceneEvaluationTree.h:26
bool IsValid() const
Definition MovieSceneEvaluationTree.h:37
friend FArchive & operator<<(FArchive &Ar, FEvaluationTreeEntryHandle &In)
Definition MovieSceneEvaluationTree.h:55
friend bool operator==(const FEvaluationTreeEntryHandle &A, const FEvaluationTreeEntryHandle &B)
Definition MovieSceneEvaluationTree.h:45
friend bool operator!=(const FEvaluationTreeEntryHandle &A, const FEvaluationTreeEntryHandle &B)
Definition MovieSceneEvaluationTree.h:50
FEvaluationTreeEntryHandle()
Definition MovieSceneEvaluationTree.h:30
Definition FrameNumber.h:18
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
Definition MovieSceneEvaluationTree.h:212
static FMovieSceneEvaluationTreeNodeHandle Invalid()
Definition MovieSceneEvaluationTree.h:225
bool IsValid() const
Definition MovieSceneEvaluationTree.h:237
FMovieSceneEvaluationTreeNodeHandle(FEvaluationTreeEntryHandle InChildrenHandle, int32 InIndex)
Definition MovieSceneEvaluationTree.h:214
FEvaluationTreeEntryHandle GetHandle() const
Definition MovieSceneEvaluationTree.h:243
int32 GetChildIndex() const
Definition MovieSceneEvaluationTree.h:249
static FMovieSceneEvaluationTreeNodeHandle Root()
Definition MovieSceneEvaluationTree.h:219
friend FArchive & operator<<(FArchive &Ar, FMovieSceneEvaluationTreeNodeHandle &In)
Definition MovieSceneEvaluationTree.h:261
friend bool operator!=(const FMovieSceneEvaluationTreeNodeHandle &A, const FMovieSceneEvaluationTreeNodeHandle &B)
Definition MovieSceneEvaluationTree.h:259
bool IsRoot() const
Definition MovieSceneEvaluationTree.h:231
friend bool operator==(const FMovieSceneEvaluationTreeNodeHandle &A, const FMovieSceneEvaluationTreeNodeHandle &B)
Definition MovieSceneEvaluationTree.h:257
Definition MovieSceneEvaluationTree.h:273
FEvaluationTreeEntryHandle DataID
Definition MovieSceneEvaluationTree.h:306
FMovieSceneEvaluationTreeNodeHandle Parent
Definition MovieSceneEvaluationTree.h:302
FMovieSceneEvaluationTreeNode()
Definition MovieSceneEvaluationTree.h:275
FEvaluationTreeEntryHandle ChildrenID
Definition MovieSceneEvaluationTree.h:304
friend FArchive & operator<<(FArchive &Ar, FMovieSceneEvaluationTreeNode &In)
Definition MovieSceneEvaluationTree.h:286
TRange< FFrameNumber > Range
Definition MovieSceneEvaluationTree.h:300
friend bool operator==(const FMovieSceneEvaluationTreeNode &A, const FMovieSceneEvaluationTreeNode &B)
Definition MovieSceneEvaluationTree.h:294
FMovieSceneEvaluationTreeNode(TRange< FFrameNumber > InRange, FMovieSceneEvaluationTreeNodeHandle InParent)
Definition MovieSceneEvaluationTree.h:280
Definition MovieSceneEvaluationTree.h:500
friend bool operator==(const FMovieSceneEvaluationTreeRangeIterator &Lhs, const FMovieSceneEvaluationTreeRangeIterator &Rhs)
Definition MovieSceneEvaluationTree.h:556
FMovieSceneEvaluationTreeNodeHandle Node() const
Definition MovieSceneEvaluationTree.h:542
FMovieSceneEvaluationTreeRangeIterator Next() const
Definition MovieSceneEvaluationTree.h:522
FMovieSceneEvaluationTreeRangeIterator Previous() const
Definition MovieSceneEvaluationTree.h:529
TRange< FFrameNumber > Range() const
Definition MovieSceneEvaluationTree.h:536
friend bool operator!=(const FMovieSceneEvaluationTreeRangeIterator &Lhs, const FMovieSceneEvaluationTreeRangeIterator &Rhs)
Definition MovieSceneEvaluationTree.h:560
FMovieSceneEvaluationTreeRangeIterator & operator--()
Definition MovieSceneEvaluationTree.h:515
FMovieSceneEvaluationTreeRangeIterator & operator++()
Definition MovieSceneEvaluationTree.h:508
Definition MovieSceneEvaluationTree.h:329
bool IsValid(FMovieSceneEvaluationTreeNodeHandle Handle) const
Definition MovieSceneEvaluationTree.h:423
TEvaluationTreeEntryContainer< FMovieSceneEvaluationTreeNode > ChildNodes
Definition MovieSceneEvaluationTree.h:493
MOVIESCENE_API void InsertNewChild(TRange< FFrameNumber > InEffectiveRange, const IMovieSceneEvaluationTreeNodeOperator &InOperator, int32 InsertIndex, FMovieSceneEvaluationTreeNodeHandle InParent)
Definition MovieSceneEvaluationTree.cpp:179
FMovieSceneEvaluationTree(FMovieSceneEvaluationTree &&RHS)
Definition MovieSceneEvaluationTree.h:339
MOVIESCENE_API FMovieSceneEvaluationTreeRangeIterator IterateFromLowerBound(TRangeBound< FFrameNumber > InStartingLowerBound) const
Definition MovieSceneEvaluationTree.cpp:174
MOVIESCENE_API TArrayView< const FMovieSceneEvaluationTreeNode > GetChildren(const FMovieSceneEvaluationTreeNode &InNode) const
Definition MovieSceneEvaluationTree.cpp:159
FMovieSceneEvaluationTree(const FMovieSceneEvaluationTree &RHS)=default
FMovieSceneEvaluationTreeNode RootNode
Definition MovieSceneEvaluationTree.h:490
MOVIESCENE_API void AddTimeRange(TRange< FFrameNumber > InTimeRange)
Definition MovieSceneEvaluationTree.cpp:208
FMovieSceneEvaluationTreeNode & GetNode(FMovieSceneEvaluationTreeNodeHandle Handle)
Definition MovieSceneEvaluationTree.h:385
FMovieSceneEvaluationTree()
Definition MovieSceneEvaluationTree.h:330
FMovieSceneEvaluationTreeNode & GetNode(FEvaluationTreeEntryHandle ChildrenID, int32 Index)
Definition MovieSceneEvaluationTree.h:455
const FMovieSceneEvaluationTreeNode & GetNode(FEvaluationTreeEntryHandle ChildrenID, int32 Index) const
Definition MovieSceneEvaluationTree.h:464
FMovieSceneEvaluationTree & operator=(const FMovieSceneEvaluationTree &RHS)=default
FMovieSceneEvaluationTree & operator=(FMovieSceneEvaluationTree &&RHS)
Definition MovieSceneEvaluationTree.h:347
MOVIESCENE_API FMovieSceneEvaluationTreeRangeIterator IterateFromTime(FFrameNumber Time) const
Definition MovieSceneEvaluationTree.cpp:169
const FMovieSceneEvaluationTreeNode & GetRootNode() const
Definition MovieSceneEvaluationTree.h:376
friend FArchive & operator<<(FArchive &Ar, FMovieSceneEvaluationTree &In)
Definition MovieSceneEvaluationTree.h:444
const FMovieSceneEvaluationTreeNode & GetNode(FMovieSceneEvaluationTreeNodeHandle Handle) const
Definition MovieSceneEvaluationTree.h:395
void Reset()
Definition MovieSceneEvaluationTree.h:428
CORE_API static const FGuid GUID
Definition SequencerObjectVersion.h:60
Definition MovieSceneEvaluationTree.h:194
virtual void operator()(FMovieSceneEvaluationTreeNode &Node) const =0
virtual ~IMovieSceneEvaluationTreeNodeOperator()
Definition MovieSceneEvaluationTree.h:198
Definition MovieSceneEvaluationTree.h:75
TArrayView< const ElementType > Get(FEvaluationTreeEntryHandle ID) const
Definition MovieSceneEvaluationTree.h:891
friend FArchive & operator<<(FArchive &Ar, TEvaluationTreeEntryContainer &In)
Definition MovieSceneEvaluationTree.h:131
void Add(FEvaluationTreeEntryHandle ID, ElementType &&Element)
Definition MovieSceneEvaluationTree.h:898
TArrayView< ElementType > Get(FEvaluationTreeEntryHandle ID)
Definition MovieSceneEvaluationTree.h:884
friend bool operator==(const TEvaluationTreeEntryContainer< ElementType > &A, const TEvaluationTreeEntryContainer< ElementType > &B)
Definition MovieSceneEvaluationTree.h:145
FEvaluationTreeEntryHandle AllocateEntry(int32 InitialCapacity=2)
Definition MovieSceneEvaluationTree.h:875
void Reset()
Definition MovieSceneEvaluationTree.h:122
void Compact()
Definition MovieSceneEvaluationTree.h:937
void Insert(FEvaluationTreeEntryHandle ID, int32 Index, ElementType &&Element)
Definition MovieSceneEvaluationTree.h:911
Definition MovieSceneEvaluationTree.h:805
friend TMovieSceneEvaluationTreeDataIterator< DataType > end(const TMovieSceneEvaluationTreeDataIterator< DataType > &In)
Definition MovieSceneEvaluationTree.h:860
TMovieSceneEvaluationTreeDataIterator & operator++()
Definition MovieSceneEvaluationTree.h:845
friend TMovieSceneEvaluationTreeDataIterator< DataType > begin(const TMovieSceneEvaluationTreeDataIterator< DataType > &In)
Definition MovieSceneEvaluationTree.h:859
bool IsValid() const
Definition MovieSceneEvaluationTree.h:833
const DataType * operator->() const
Definition MovieSceneEvaluationTree.h:827
friend bool operator==(const TMovieSceneEvaluationTreeDataIterator< DataType > &A, const TMovieSceneEvaluationTreeDataIterator< DataType > &B)
Definition MovieSceneEvaluationTree.h:862
friend bool operator!=(const TMovieSceneEvaluationTreeDataIterator< DataType > &A, const TMovieSceneEvaluationTreeDataIterator< DataType > &B)
Definition MovieSceneEvaluationTree.h:863
const DataType & operator*() const
Definition MovieSceneEvaluationTree.h:821
TMovieSceneEvaluationTreeDataIterator(const TMovieSceneEvaluationTree< DataType > &InTree, FMovieSceneEvaluationTreeNodeHandle StartNode)
Definition MovieSceneEvaluationTree.h:807
Definition MovieSceneEvaluationTreeFormatter.h:19
Definition MovieSceneEvaluationTree.h:603
void AddSelective(TRange< FFrameNumber > InTimeRange, DataType InData, TFunctionRef< bool(FMovieSceneEvaluationTreeNodeHandle)> Predicate)
Definition MovieSceneEvaluationTree.h:672
TArrayView< DataType > GetMutableDataForSingleNode(const FMovieSceneEvaluationTreeNode &InNode)
Definition MovieSceneEvaluationTree.h:717
void Add(TRange< FFrameNumber > InTimeRange, DataType InData)
Definition MovieSceneEvaluationTree.h:683
friend bool operator==(const TMovieSceneEvaluationTree< DataType > &A, const TMovieSceneEvaluationTree< DataType > &B)
Definition MovieSceneEvaluationTree.h:744
void Compact()
Definition MovieSceneEvaluationTree.h:691
void AddUnique(TRange< FFrameNumber > InTimeRange, DataType InData)
Definition MovieSceneEvaluationTree.h:635
friend FArchive & operator<<(FArchive &Ar, TMovieSceneEvaluationTree< DataType > &In)
Definition MovieSceneEvaluationTree.h:735
void Add(TRange< FFrameNumber > InTimeRange)
Definition MovieSceneEvaluationTree.h:618
void Reset()
Definition MovieSceneEvaluationTree.h:700
void AddIfEmpty(TRange< FFrameNumber > InTimeRange, DataType InData)
Definition MovieSceneEvaluationTree.h:646
bool IsEmpty() const
Definition MovieSceneEvaluationTree.h:608
TMovieSceneEvaluationTreeDataIterator< DataType > GetAllData(FMovieSceneEvaluationTreeNodeHandle NodeHandle) const
Definition MovieSceneEvaluationTree.h:727
TArrayView< const DataType > GetDataForSingleNode(const FMovieSceneEvaluationTreeNode &InNode) const
Definition MovieSceneEvaluationTree.h:709
void AddIfEmptySelective(TRange< FFrameNumber > InTimeRange, DataType InData, TFunctionRef< bool(FMovieSceneEvaluationTreeNodeHandle)> Predicate)
Definition MovieSceneEvaluationTree.h:659