UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieScenePreAnimatedCaptureSources.inl
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
8#include "Algo/Find.h"
9
10namespace UE
11{
12namespace MovieScene
13{
14
15template<typename KeyType>
19
20template<typename KeyType>
22{
23 FPreAnimatedStateMetaDataArray& Array = KeyToMetaData.FindOrAdd(InKey);
25 {
26 if (Existing->bWantsRestoreState != MetaData.bWantsRestoreState)
27 {
28 Existing->bWantsRestoreState = MetaData.bWantsRestoreState;
29 Owner->UpdateMetaData(*Existing);
30
32 }
33
35 }
36
38 Owner->AddMetaData(MetaData);
40}
41
42template<typename KeyType>
44{
46 if (Array)
47 {
48 for (int32 Index = Array->Num()-1; Index >= 0; --Index)
49 {
50 const FPreAnimatedStateMetaData& MetaData = (*Array)[Index];
51 if (MetaData.Entry.ValueHandle.TypeID == InStorageID)
52 {
53 Owner->RemoveMetaData(MetaData);
55 }
56 }
57
58 if (Array->Num() == 0)
59 {
60 KeyToMetaData.Remove(InKey);
61 }
62 }
63}
64
65template<typename KeyType>
67{
69 if (Array)
70 {
71 for (int32 Index = Array->Num()-1; Index >= 0; --Index)
72 {
73 Owner->RemoveMetaData((*Array)[Index]);
74 }
75
76 KeyToMetaData.Remove(InKey);
77 }
78}
79
80template<typename KeyType>
82{
83 KeyToMetaData.Empty();
84}
85
86template<typename KeyType>
88{
89 FInstanceHandle InstanceHandle = Params.TerminalInstanceHandle;
90 if (!InstanceHandle.IsValid())
91 {
92 for (auto It = KeyToMetaData.CreateIterator(); It; ++It)
93 {
94 OutExpiredMetaData.Append(It.Value());
95 }
96 KeyToMetaData.Empty();
97 }
98 else for (auto It = KeyToMetaData.CreateIterator(); It; ++It)
99 {
101 for (int32 Index = Array.Num()-1; Index >= 0; --Index)
104 if (MetaData.RootInstanceHandle == InstanceHandle)
105 {
107 Array.RemoveAt(Index, 1, EAllowShrinking::No);
108 }
109 }
110
111 if (Array.Num() == 0)
112 {
113 It.RemoveCurrent();
114 }
115 }
116}
117
118template<typename KeyType>
120{
121 for (auto It = KeyToMetaData.CreateIterator(); It; ++It)
122 {
124 for (int32 Index = Array.Num()-1; Index >= 0; --Index)
125 {
127 if (MetaData.Entry.GroupHandle == Group)
128 {
130 Array.RemoveAt(Index, 1, EAllowShrinking::No);
131 }
132 }
133
134 if (Array.Num() == 0)
135 {
136 It.RemoveCurrent();
137 }
138 }
139}
140
141template<typename KeyType>
143{
144 for (auto It = KeyToMetaData.CreateIterator(); It; ++It)
145 {
147 for (int32 Index = Array.Num()-1; Index >= 0; --Index)
148 {
150 if (MetaData.Entry.ValueHandle.TypeID == StorageID &&
151 (!StorageIndex.IsValid() || MetaData.Entry.ValueHandle.StorageIndex == StorageIndex))
152 {
154 Array.RemoveAt(Index, 1, EAllowShrinking::No);
155 }
156 }
157
158 if (Array.Num() == 0)
159 {
160 It.RemoveCurrent();
161 }
162 }
163}
164
165template<typename KeyType>
167{
168 for (auto It = KeyToMetaData.CreateIterator(); It; ++It)
169 {
171 for (int32 Index = Array.Num()-1; Index >= 0; --Index)
172 {
174 if (MetaData.RootInstanceHandle == InstanceHandle)
175 {
177 Array.RemoveAt(Index, 1, EAllowShrinking::No);
178 }
179 }
180
181 if (Array.Num() == 0)
182 {
183 It.RemoveCurrent();
184 }
185 }
186}
187
188template<typename KeyType>
190{
191 for (const TPair<KeyType, FPreAnimatedStateMetaDataArray>& Pair : KeyToMetaData)
192 {
193 for (const FPreAnimatedStateMetaData& MetaData : Pair.Value)
194 {
195 if (MetaData.RootInstanceHandle == RootInstanceHandle)
196 {
197 return true;
198 }
199 }
200 }
201 return false;
202}
203
204} // namespace MovieScene
205} // namespace UE
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
Definition MovieScene.Build.cs:6
Definition Array.h:670
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool Find(const ElementType &Item, SizeType &Index) const
Definition Array.h:1302
UE_REWRITE constexpr auto FindBy(RangeType &&Range, const ValueType &Value, ProjectionType Proj) -> decltype(AlgoImpl::FindBy(Forward< RangeType >(Range), Value, MoveTemp(Proj)))
Definition Find.h:68
EPreAnimatedCaptureSourceState
Definition MovieScenePreAnimatedCaptureSources.h:29
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
Definition Tuple.h:652
Definition MovieSceneSequenceInstanceHandle.h:15
bool IsValid() const
Definition MovieSceneSequenceInstanceHandle.h:29
Definition MovieScenePreAnimatedStateExtension.h:73
Definition MovieScenePreAnimatedStateTypes.h:190
FPreAnimatedStateEntry Entry
Definition MovieScenePreAnimatedStateTypes.h:192
Definition MovieScenePreAnimatedStateTypes.h:86
Definition MovieScenePreAnimatedStorageID.h:14
Definition MovieScenePreAnimatedStateTypes.h:42
bool IsValid() const
Definition MovieScenePreAnimatedStateTypes.h:57
Definition MovieSceneRestoreStateParams.h:21
Definition MovieSceneSequenceInstanceHandle.h:58
MOVIESCENE_API void Reset() override
Definition MovieScenePreAnimatedCaptureSources.inl:81
MOVIESCENE_API void GatherAndRemoveMetaDataForRootInstance(FRootInstanceHandle InstanceHandle, TArray< FPreAnimatedStateMetaData > &OutExpiredMetaData) override
Definition MovieScenePreAnimatedCaptureSources.inl:166
MOVIESCENE_API void GatherAndRemoveExpiredMetaData(const FRestoreStateParams &Params, TArray< FPreAnimatedStateMetaData > &OutExpiredMetaData) override
Definition MovieScenePreAnimatedCaptureSources.inl:87
MOVIESCENE_API bool ContainsInstanceHandle(FRootInstanceHandle RootInstanceHandle) const override
Definition MovieScenePreAnimatedCaptureSources.inl:189
MOVIESCENE_API void GatherAndRemoveMetaDataForStorage(FPreAnimatedStorageID StorageID, FPreAnimatedStorageIndex StorageIndex, TArray< FPreAnimatedStateMetaData > &OutExpiredMetaData) override
Definition MovieScenePreAnimatedCaptureSources.inl:142
TPreAnimatedCaptureSources(FPreAnimatedStateExtension *InOwner)
Definition MovieScenePreAnimatedCaptureSources.inl:16
MOVIESCENE_API void StopTrackingCaptureSource(const KeyType &InKey, FPreAnimatedStorageID InStorageID)
Definition MovieScenePreAnimatedCaptureSources.inl:43
MOVIESCENE_API void GatherAndRemoveMetaDataForGroup(FPreAnimatedStorageGroupHandle Group, TArray< FPreAnimatedStateMetaData > &OutExpiredMetaData) override
Definition MovieScenePreAnimatedCaptureSources.inl:119
MOVIESCENE_API EPreAnimatedCaptureSourceState BeginTrackingCaptureSource(const KeyType &InKey, const FPreAnimatedStateMetaData &MetaData)
Definition MovieScenePreAnimatedCaptureSources.inl:21