UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneSharedPlaybackState.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "CoreTypes.h"
12
13#define UE_API MOVIESCENE_API
14
21
22namespace UE::MovieScene
23{
24
54
58struct FSharedPlaybackState : TSharedFromThis<FSharedPlaybackState>
59{
60public:
61
66
68
69public:
70
72 UObject* GetPlaybackContext() const { return WeakPlaybackContext.Get(); }
73
75 UMovieSceneSequence* GetRootSequence() const { return WeakRootSequence.Get(); }
76
78 UMovieSceneEntitySystemLinker* GetLinker() const { return WeakLinker.Get(); }
79
82
84 const FRootInstanceHandle& GetRootInstanceHandle() const { return RootInstanceHandle; }
85
87 const FMovieSceneCompiledDataID& GetRootCompiledDataID() const { return RootCompiledDataID; }
88
90 const FMovieSceneInstancePreAnimatedState& GetPreAnimatedState() const { return PreAnimatedState; }
91
94
95public:
96
97 // General utility methods
98
101
106
108 UE_API TArrayView<TWeakObjectPtr<>> FindBoundObjects(const FGuid& ObjectBindingID, FMovieSceneSequenceIDRef SequenceID) const;
109
112
113public:
114
119 {
120#if !UE_BUILD_SHIPPING
122 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
123#endif
124 return Capabilities;
125 }
126
131 {
132#if !UE_BUILD_SHIPPING
134 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
135#endif
136 return Capabilities;
137 }
138
142 template<typename T>
143 bool HasCapability() const
144 {
145#if !UE_BUILD_SHIPPING
147 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
148#endif
149 return Capabilities.HasCapability<T>();
150 }
151
155 template<typename T>
156 T* FindCapability() const
157 {
158#if !UE_BUILD_SHIPPING
160 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
161#endif
162 return Capabilities.FindCapability<T>();
163 }
164
168 template<typename T, typename ...ArgTypes>
169 T& AddCapability(ArgTypes&&... InArgs)
170 {
171#if !UE_BUILD_SHIPPING
173 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
174#endif
175 T& Cap = Capabilities.AddCapability<T>(Forward<ArgTypes>(InArgs)...);
176 MaybeInitialize(Cap);
177 return Cap;
178 }
179
183 template<typename T>
185 {
186#if !UE_BUILD_SHIPPING
188 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
189#endif
190 T& Cap = Capabilities.AddCapabilityRaw<T>(InPointer);
191 MaybeInitialize(Cap);
192 return Cap;
193 }
194
198 template<typename T>
200 {
201#if !UE_BUILD_SHIPPING
203 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
204#endif
205 T& Cap = Capabilities.AddCapabilityShared<T>(InSharedRef);
206 MaybeInitialize(Cap);
207 return Cap;
208 }
209
218 template<typename T, typename ...ArgTypes>
220 {
221#if !UE_BUILD_SHIPPING
223 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
224#endif
225 if (HasCapability<T>())
226 {
227 T& Cap = Capabilities.OverwriteCapability<T>(Forward<ArgTypes>(InArgs)...);
228 MaybeInitialize(Cap);
229 return Cap;
230 }
231 else
232 {
233 T& Cap = Capabilities.AddCapability<T>(Forward<ArgTypes>(InArgs)...);
234 MaybeInitialize(Cap);
235 return Cap;
236 }
237 }
238
244 template<typename T, typename ...ArgTypes>
246 {
247#if !UE_BUILD_SHIPPING
249 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
250#endif
251 if (HasCapability<T>())
252 {
253 T& Cap = Capabilities.OverwriteCapabilityRaw<T>(InPointer);
254 MaybeInitialize(Cap);
255 return Cap;
256 }
257 else
258 {
259 T& Cap = Capabilities.AddCapabilityRaw<T>(InPointer);
260 MaybeInitialize(Cap);
261 return Cap;
262 }
263 }
264
270 template<typename T, typename ...ArgTypes>
272 {
273#if !UE_BUILD_SHIPPING
275 TEXT("Playback capabilities aren't meant to be thread-safe. Do not modify or access their container outside of the game thread."));
276#endif
277 if (HasCapability<T>())
278 {
279 T& Cap = Capabilities.OverwriteCapabilityShared<T>(InSharedRef);
280 MaybeInitialize(Cap);
281 return Cap;
282 }
283 else
284 {
285 T& Cap = Capabilities.AddCapabilityShared<T>(InSharedRef);
286 MaybeInitialize(Cap);
287 return Cap;
288 }
289 }
290
291public:
292
294
295#if !UE_BUILD_SHIPPING
296 void SetDebugBreakOnDestroy() { bDebugBreakOnDestroy = true; }
297#endif
298
299private:
300
301 template<typename T>
302 void MaybeInitialize(T& Cap)
303 {
305 {
306 IPlaybackCapability* InterfacePtr = static_cast<IPlaybackCapability*>(&Cap);
307 InterfacePtr->Initialize(SharedThis(this));
308 }
309 }
310
311private:
312
315
317 TWeakObjectPtr<UObject> WeakPlaybackContext;
318
321
324
326 FRootInstanceHandle RootInstanceHandle;
327
329 FMovieSceneCompiledDataID RootCompiledDataID;
330
332 FPlaybackCapabilities Capabilities;
333
336
337#if !UE_BUILD_SHIPPING
338 bool bDebugBreakOnDestroy = false;
339#endif
340};
341
342} // namespace UE::MovieScene
343
344#undef UE_API
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
TCallTraits< FMovieSceneSequenceID >::ParamType FMovieSceneSequenceIDRef
Definition MovieSceneSequenceID.h:93
#define UE_API
Definition SColorGradingComponentViewer.h:12
CORE_API bool IsInGameThread()
Definition ThreadingBase.cpp:185
Definition MovieSceneEntitySystemRunner.h:74
Definition MovieScenePreAnimatedState.h:26
Definition ArrayView.h:139
Definition SharedPointer.h:1640
static UE_FORCEINLINE_HINT TSharedRef< OtherType, Mode > SharedThis(OtherType *ThisPtr)
Definition SharedPointer.h:1780
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition MovieSceneCompiledDataManager.h:181
Definition MovieSceneEntitySystemLinker.h:113
Definition MovieSceneSequence.h:73
Definition Object.h:95
Definition ConstraintsManager.h:14
Definition Guid.h:109
Definition MovieSceneCompiledDataID.h:8
Definition MovieSceneEvaluationState.h:94
Definition MovieSceneSequenceHierarchy.h:279
Definition ObjectPtr.h:488
Definition PointerIsConvertibleFromTo.h:60
Definition WeakObjectPtrTemplates.h:25
FORCEINLINE T * Get(bool bEvenIfPendingKill) const
Definition WeakObjectPtrTemplates.h:132
Definition MovieScenePlaybackCapabilities.h:614
T & OverwriteCapabilityRaw(T *InPointer)
Definition MovieScenePlaybackCapabilities.h:743
T & OverwriteCapability(ArgTypes &&... InArgs)
Definition MovieScenePlaybackCapabilities.h:729
bool HasCapability() const
Definition MovieScenePlaybackCapabilities.h:627
T & AddCapability(ArgTypes &&... InArgs)
Definition MovieScenePlaybackCapabilities.h:671
T & AddCapabilityShared(TSharedRef< T > InSharedRef)
Definition MovieScenePlaybackCapabilities.h:712
T & AddCapabilityRaw(T *InPointer)
Definition MovieScenePlaybackCapabilities.h:697
T * FindCapability() const
Definition MovieScenePlaybackCapabilities.h:635
T & OverwriteCapabilityShared(TSharedRef< T > InSharedRef)
Definition MovieScenePlaybackCapabilities.h:757
Definition MovieSceneSequenceInstanceHandle.h:58
Definition MovieSceneSharedPlaybackState.h:29
UMovieSceneCompiledDataManager * CompiledDataManager
Definition MovieSceneSharedPlaybackState.h:52
UObject * PlaybackContext
Definition MovieSceneSharedPlaybackState.h:33
FRootInstanceHandle RootInstanceHandle
Definition MovieSceneSharedPlaybackState.h:40
TObjectPtr< UMovieSceneEntitySystemLinker > Linker
Definition MovieSceneSharedPlaybackState.h:46
Definition MovieSceneSharedPlaybackState.h:59
void SetDebugBreakOnDestroy()
Definition MovieSceneSharedPlaybackState.h:296
UMovieSceneSequence * GetRootSequence() const
Definition MovieSceneSharedPlaybackState.h:75
const FMovieSceneCompiledDataID & GetRootCompiledDataID() const
Definition MovieSceneSharedPlaybackState.h:87
T & AddCapabilityShared(TSharedRef< T > InSharedRef)
Definition MovieSceneSharedPlaybackState.h:199
bool HasCapability() const
Definition MovieSceneSharedPlaybackState.h:143
UE_API const FMovieSceneSequenceHierarchy * GetHierarchy() const
Definition MovieSceneSharedPlaybackState.cpp:53
UObject * GetPlaybackContext() const
Definition MovieSceneSharedPlaybackState.h:72
TObjectPtr< UMovieSceneCompiledDataManager > GetCompiledDataManager() const
Definition MovieSceneSharedPlaybackState.h:81
const FRootInstanceHandle & GetRootInstanceHandle() const
Definition MovieSceneSharedPlaybackState.h:84
T & SetOrAddCapabilityShared(TSharedRef< T > InSharedRef)
Definition MovieSceneSharedPlaybackState.h:271
const FMovieSceneInstancePreAnimatedState & GetPreAnimatedState() const
Definition MovieSceneSharedPlaybackState.h:90
UE_API TArrayView< TWeakObjectPtr<> > FindBoundObjects(const FGuid &ObjectBindingID, FMovieSceneSequenceIDRef SequenceID) const
Definition MovieSceneSharedPlaybackState.cpp:76
UE_API ~FSharedPlaybackState()
Definition MovieSceneSharedPlaybackState.cpp:34
T & SetOrAddCapability(ArgTypes &&... InArgs)
Definition MovieSceneSharedPlaybackState.h:219
T & AddCapabilityRaw(T *InPointer)
Definition MovieSceneSharedPlaybackState.h:184
const FPlaybackCapabilities & GetCapabilities() const
Definition MovieSceneSharedPlaybackState.h:130
UE_API UMovieSceneSequence * GetSequence(FMovieSceneSequenceIDRef SequenceID) const
Definition MovieSceneSharedPlaybackState.cpp:62
UE_API void ClearObjectCaches()
Definition MovieSceneSharedPlaybackState.cpp:85
FPlaybackCapabilities & GetCapabilities()
Definition MovieSceneSharedPlaybackState.h:118
UE_API TSharedPtr< FMovieSceneEntitySystemRunner > GetRunner() const
Definition MovieSceneSharedPlaybackState.cpp:44
T * FindCapability() const
Definition MovieSceneSharedPlaybackState.h:156
UMovieSceneEntitySystemLinker * GetLinker() const
Definition MovieSceneSharedPlaybackState.h:78
T & AddCapability(ArgTypes &&... InArgs)
Definition MovieSceneSharedPlaybackState.h:169
FMovieSceneInstancePreAnimatedState & GetPreAnimatedState()
Definition MovieSceneSharedPlaybackState.h:93
UE_API void InvalidateCachedData()
Definition MovieSceneSharedPlaybackState.cpp:93
T & SetOrAddCapabilityRaw(T *InPointer)
Definition MovieSceneSharedPlaybackState.h:245
Definition IMovieScenePlaybackCapability.h:78
virtual void Initialize(TSharedRef< const FSharedPlaybackState > Owner)
Definition IMovieScenePlaybackCapability.h:82