UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneSpawnRegister.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Map.h"
6#include "CoreMinimal.h"
8#include "HAL/Platform.h"
9#include "HAL/PlatformCrt.h"
14#include "Misc/Guid.h"
15#include "Misc/OptionalFwd.h"
16#include "MovieSceneFwd.h"
19#include "Templates/TypeHash.h"
23
24class UClass;
25class UObject;
26template <typename FuncType> class TFunctionRef;
27
28enum class ESpawnOwnership : uint8;
29
31class ISequencer;
32class UActorFactory;
33class UMovieScene;
37struct FTransformData;
39
40namespace UE::MovieScene
41{
42 struct FSharedPlaybackState;
43} // namespace UE::MovieScene
44
48class FMovieSceneSpawnRegister : public TSharedFromThis<FMovieSceneSpawnRegister>
49{
50public:
51
53
55
58
63
72 MOVIESCENE_API TWeakObjectPtr<> FindSpawnedObject(const FGuid& BindingId, FMovieSceneSequenceIDRef TemplateID, int BindingIndex) const;
73
84 MOVIESCENE_API virtual UObject* SpawnObject(const FGuid& BindingId, UMovieScene& MovieScene, FMovieSceneSequenceIDRef Template, TSharedRef<const FSharedPlaybackState> SharedPlaybackState, int32 BindingIndex);
85
98 MOVIESCENE_API bool DestroySpawnedObject(const FGuid& BindingId, FMovieSceneSequenceIDRef TemplateID, TSharedRef<const FSharedPlaybackState> SharedPlaybackState, int32 BindingIndex);
99
106 void DestroyObjectDirectly(UObject& InObject) { DestroySpawnedObject(InObject, nullptr); }
107
115
122
123public:
124
129
134
139
140public:
141
142 // Backwards compatible API, to be deprecated later
143
144 TWeakObjectPtr<> FindSpawnedObject(const FGuid& BindingId, FMovieSceneSequenceIDRef TemplateID) const { return FindSpawnedObject(BindingId, TemplateID, 0); }
145 virtual UObject* SpawnObject(const FGuid& BindingId, UMovieScene& MovieScene, FMovieSceneSequenceIDRef Template, TSharedRef<const FSharedPlaybackState> SharedPlaybackState) { return SpawnObject(BindingId, MovieScene, Template, SharedPlaybackState, 0); }
146 bool DestroySpawnedObject(const FGuid& BindingId, FMovieSceneSequenceIDRef TemplateID, TSharedRef<const FSharedPlaybackState> SharedPlaybackState) { return DestroySpawnedObject(BindingId, TemplateID, SharedPlaybackState, 0); }
148 MOVIESCENE_API bool DestroySpawnedObject(const FGuid& BindingId, FMovieSceneSequenceIDRef TemplateID, IMovieScenePlayer& Player);
155
156#if WITH_EDITOR
157
158public:
159
165 virtual bool CanSpawnObject(UClass* InClass) const { return false; }
166
175 virtual TValueOrError<FNewSpawnable, FText> CreateNewSpawnableType(UObject& SourceObject, UMovieScene& OwnerMovieScene, UActorFactory* ActorFactory = nullptr) { return MakeError(NSLOCTEXT("SpawnRegister", "NotSupported", "Not supported")); }
176
180 virtual void SaveDefaultSpawnableState(const FGuid& Guid, int32 BindingIndex, FMovieSceneSequenceIDRef TemplateID, TSharedRef<const FSharedPlaybackState> SharedPlaybackState) {}
181
191 virtual void SetupDefaultsForSpawnable(UObject* SpawnedObject, const FGuid& Guid, const TOptional<FTransformData>& TransformData, TSharedRef<ISequencer> Sequencer, USequencerSettings* Settings) {}
192
201
208 MOVIESCENE_API virtual bool CanConvertToPossessable(const FGuid& Guid, FMovieSceneSequenceIDRef TemplateID, TSharedRef<const FSharedPlaybackState> SharedPlaybackState, int32 BindingIndex=0) const;
209
210public:
211
212 // Backwards compatible API, to be deprecated later
213#if WITH_EDITOR
214 virtual void SaveDefaultSpawnableState(const FGuid& Guid, FMovieSceneSequenceIDRef TemplateID, TSharedRef<const FSharedPlaybackState> SharedPlaybackState) { SaveDefaultSpawnableState(Guid, 0, TemplateID, SharedPlaybackState); }
217#endif
220 virtual bool CanConvertSpawnableToPossessable(FMovieSceneSpawnable& Spawnable) const { return true; }
221
222#endif
223
224protected:
225
235
239 UE_DEPRECATED(5.5, "Please use the version of this with BindingIndex")
241
242 virtual void PreDestroyObject(UObject& Object, const FGuid& BindingId, int32 BindingIndex, FMovieSceneSequenceIDRef TemplateID) {}
243
244 UE_DEPRECATED(5.5, "Please use the version of this with CustomSpawnableBinding")
246
254
255protected:
256
275
280 {
287
289 {
290 return BindingId == Other.BindingId && TemplateID == Other.TemplateID && BindingIndex == Other.BindingIndex;
291 }
292
294 {
295 return HashCombine(HashCombine(GetTypeHash(Key.BindingId), GetTypeHash(Key.TemplateID)), GetTypeHash(Key.BindingIndex));
296 }
297
300
303
304 /* For level sequences using custom spawnable bindings, the index of the binding reference. */
306 };
307
308protected:
309
312
314 bool bCleaningUp = false;
315};
316
#define check(expr)
Definition AssertionMacros.h:314
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
#define UE_DECLARE_MOVIESCENE_PLAYBACK_CAPABILITY_API(ApiDeclSpec, ClassName)
Definition IMovieScenePlaybackCapability.h:147
#define NSLOCTEXT(InNamespace, InKey, InTextLiteral)
Definition Internationalization.h:300
TCallTraits< FMovieSceneSequenceID >::ParamType FMovieSceneSequenceIDRef
Definition MovieSceneSequenceID.h:93
ESpawnOwnership
Definition MovieSceneSpawnable.h:23
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
UE_REWRITE TValueOrError_ErrorProxy< ArgTypes... > MakeError(ArgTypes &&... Args UE_LIFETIMEBOUND)
Definition ValueOrError.h:41
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition MovieSceneSpawnRegister.h:49
MOVIESCENE_API void DestroyObjectsByPredicate(TSharedRef< const FSharedPlaybackState > SharedPlaybackState, const TFunctionRef< bool(const FGuid &, ESpawnOwnership, FMovieSceneSequenceIDRef, int32)> &Predicate)
Definition MovieSceneSpawnRegister.cpp:159
virtual void DestroySpawnedObject(UObject &Object, UMovieSceneSpawnableBindingBase *CustomSpawnableBinding)=0
MOVIESCENE_API bool DestroySpawnedObject(const FGuid &BindingId, FMovieSceneSequenceIDRef TemplateID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState, int32 BindingIndex)
bool DestroySpawnedObject(const FGuid &BindingId, FMovieSceneSequenceIDRef TemplateID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneSpawnRegister.h:146
TWeakObjectPtr FindSpawnedObject(const FGuid &BindingId, FMovieSceneSequenceIDRef TemplateID) const
Definition MovieSceneSpawnRegister.h:144
MOVIESCENE_API void CleanUpSequence(FMovieSceneSequenceIDRef TemplateID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneSpawnRegister.cpp:227
MOVIESCENE_API void CleanUp(TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneSpawnRegister.cpp:218
MOVIESCENE_API TWeakObjectPtr FindSpawnedObject(const FGuid &BindingId, FMovieSceneSequenceIDRef TemplateID, int BindingIndex) const
Definition MovieSceneSpawnRegister.cpp:17
MOVIESCENE_API void ForgetExternallyOwnedSpawnedObjects(TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneSpawnRegister.cpp:202
virtual UObject * SpawnObject(FMovieSceneSpawnable &Spawnable, FMovieSceneSequenceIDRef TemplateID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)=0
void DestroyObjectDirectly(UObject &InObject)
Definition MovieSceneSpawnRegister.h:106
virtual UObject * SpawnObject(const FGuid &BindingId, UMovieScene &MovieScene, FMovieSceneSequenceIDRef Template, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneSpawnRegister.h:145
bool bCleaningUp
Definition MovieSceneSpawnRegister.h:314
MOVIESCENE_API void OnSequenceExpired(FMovieSceneSequenceIDRef TemplateID, TSharedRef< const FSharedPlaybackState > SharedPlaybackState)
Definition MovieSceneSpawnRegister.cpp:234
virtual MOVIESCENE_API void PreDestroyObject(UObject &Object, const FGuid &BindingId, FMovieSceneSequenceIDRef TemplateID)
Definition MovieSceneSpawnRegister.cpp:98
TMap< FMovieSceneSpawnRegisterKey, FSpawnedObject > Register
Definition MovieSceneSpawnRegister.h:311
virtual MOVIESCENE_API UObject * SpawnObject(const FGuid &BindingId, UMovieScene &MovieScene, FMovieSceneSequenceIDRef Template, TSharedRef< const FSharedPlaybackState > SharedPlaybackState, int32 BindingIndex)
Definition MovieSceneSpawnRegister.h:318
virtual void DestroySpawnedObject(UObject &, UMovieSceneSpawnableBindingBase *CustomSpawnableBinding) override
Definition MovieSceneSpawnRegister.h:321
virtual UObject * SpawnObject(FMovieSceneSpawnable &, FMovieSceneSequenceIDRef, TSharedRef< const FSharedPlaybackState >) override
Definition MovieSceneSpawnRegister.h:320
Definition IMovieScenePlayer.h:90
Definition MovieScene.Build.cs:6
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:1640
Definition SharedPointer.h:153
Definition ValueOrError.h:58
Definition Class.h:3793
Definition MovieSceneSpawnableBinding.h:33
Definition MovieScene.h:358
Definition Object.h:95
Definition ConstraintsManager.h:14
Definition Guid.h:109
Definition MovieSceneEvaluationState.h:307
Definition MovieSceneSequenceID.h:13
Definition MovieSceneSpawnRegister.h:280
FGuid BindingId
Definition MovieSceneSpawnRegister.h:299
bool operator==(const FMovieSceneSpawnRegisterKey &Other) const
Definition MovieSceneSpawnRegister.h:288
int32 BindingIndex
Definition MovieSceneSpawnRegister.h:305
friend uint32 GetTypeHash(const FMovieSceneSpawnRegisterKey &Key)
Definition MovieSceneSpawnRegister.h:293
FMovieSceneSequenceID TemplateID
Definition MovieSceneSpawnRegister.h:302
FMovieSceneSpawnRegisterKey(FMovieSceneSequenceIDRef InTemplateID, const FGuid &InBindingId, int32 InBindingIndex)
Definition MovieSceneSpawnRegister.h:281
Definition MovieSceneSpawnRegister.h:259
FSpawnedObject(const FGuid &InGuid, UObject &InObject, ESpawnOwnership InOwnership)
Definition MovieSceneSpawnRegister.h:260
FGuid Guid
Definition MovieSceneSpawnRegister.h:267
TWeakObjectPtr< UObject > Object
Definition MovieSceneSpawnRegister.h:270
ESpawnOwnership Ownership
Definition MovieSceneSpawnRegister.h:273
Definition MovieSceneSpawnable.h:40
Definition TransformData.h:12
Definition Optional.h:131
Definition WeakObjectPtrTemplates.h:25
Definition MovieSceneSharedPlaybackState.h:59