UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MovieSceneChannelHandle.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "HAL/Platform.h"
8#include "UObject/NameTypes.h"
9
13template<typename> struct TMovieSceneChannelHandle;
14template<typename> struct TMovieSceneChannelTraits;
15
20{
25
30
31public:
32
37 {
38 if (A.ChannelIndex == B.ChannelIndex && A.ChannelTypeName == B.ChannelTypeName)
39 {
40 FMovieSceneChannelProxy* ProxyA = A.WeakChannelProxy.Pin().Get();
41 FMovieSceneChannelProxy* ProxyB = B.WeakChannelProxy.Pin().Get();
42
43 // Cannot be equal if either handle is expired
44 return ProxyA && ProxyA == ProxyB;
45 }
46 return false;
47 }
48
53 {
54 return !(A == B);
55 }
56
57 template<typename ChannelType>
59 {
60#if DO_CHECK
61 TrackChannelTypeNameInternal(ChannelType::StaticStruct());
62#endif
63 }
64
65public:
66
70 template<typename OtherChannelType>
72
77
82
89
94 {
95 return WeakChannelProxy.Pin().Get();
96 }
97
98#if WITH_EDITOR
99
105 MOVIESCENE_API const FMovieSceneChannelMetaData* GetMetaData() const;
106
112 MOVIESCENE_API const void* GetExtendedEditorData() const;
113
114#endif // WITH_EDITOR
115
116private:
117
118#if DO_CHECK
119 MOVIESCENE_API static void TrackChannelTypeNameInternal(UStruct* ChannelType);
122
123 template<typename OtherChannelType>
124 bool IsCastValid() const
125 {
126 return IsCastValidInternal(OtherChannelType::StaticStruct());
127 }
128#endif // DO_CHECK
129
130private:
131
133 TWeakPtr<FMovieSceneChannelProxy> WeakChannelProxy;
134
136 FName ChannelTypeName;
137
139 int32 ChannelIndex;
140};
141
142
147template<typename ChannelType> struct TMovieSceneChannelHandle;
148
160
165template<typename ChannelType>
166struct TMovieSceneChannelHandle : TMovieSceneChannelHandle<typename ChannelType::Super>
167{
170
177
183 ChannelType* Get() const
184 {
185 return static_cast<ChannelType*>(FMovieSceneChannelHandle::Get());
186 }
187
188#if WITH_EDITOR
189
196 {
197 return static_cast<const typename TMovieSceneChannelTraits<ChannelType>::ExtendedEditorDataType*>(FMovieSceneChannelHandle::GetExtendedEditorData());
198 }
199
200#endif // WITH_EDITOR
201
202protected:
203
207
209};
210
211
212template<typename OtherChannelType>
214{
215#if DO_CHECK
216 checkf(IsCastValid<OtherChannelType>(), TEXT("Invalid cast between unrelated channel types"));
217#endif
218
219 return TMovieSceneChannelHandle<OtherChannelType>(WeakChannelProxy, ChannelTypeName, ChannelIndex);
220}
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define TEXT(x)
Definition Platform.h:1272
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
UScriptStruct * StaticStruct()
Definition ReflectedTypeAccessors.h:18
Definition NameTypes.h:617
Definition SharedPointer.h:1295
UE_FORCEINLINE_HINT TSharedPtr< ObjectType, Mode > Pin() const &
Definition SharedPointer.h:1512
Definition Class.h:480
Definition MovieSceneChannelHandle.h:20
friend bool operator!=(const FMovieSceneChannelHandle &A, const FMovieSceneChannelHandle &B)
Definition MovieSceneChannelHandle.h:52
MOVIESCENE_API FMovieSceneChannelHandle()
Definition MovieSceneChannelHandle.cpp:16
MOVIESCENE_API int32 GetChannelIndex() const
Definition MovieSceneChannelHandle.cpp:51
TMovieSceneChannelHandle< OtherChannelType > Cast() const
Definition MovieSceneChannelHandle.h:213
static void TrackChannelTypeName()
Definition MovieSceneChannelHandle.h:58
FMovieSceneChannelProxy * GetChannelProxy() const
Definition MovieSceneChannelHandle.h:93
MOVIESCENE_API FName GetChannelTypeName() const
Definition MovieSceneChannelHandle.cpp:46
MOVIESCENE_API FMovieSceneChannel * Get() const
Definition MovieSceneChannelHandle.cpp:27
friend bool operator==(const FMovieSceneChannelHandle &A, const FMovieSceneChannelHandle &B)
Definition MovieSceneChannelHandle.h:36
Definition MovieSceneChannelProxy.h:198
Definition MovieSceneChannel.h:112
TMovieSceneChannelHandle()
Definition MovieSceneChannelHandle.h:153
TMovieSceneChannelHandle(TWeakPtr< FMovieSceneChannelProxy > InWeakChannelProxy, FName InName, int32 InChannelIndex)
Definition MovieSceneChannelHandle.h:156
Definition MovieSceneChannelHandle.h:167
TMovieSceneChannelHandle()
Definition MovieSceneChannelHandle.h:168
ChannelType * Get() const
Definition MovieSceneChannelHandle.h:183
TMovieSceneChannelHandle(TWeakPtr< FMovieSceneChannelProxy > InWeakChannelProxy, int32 InChannelIndex)
Definition MovieSceneChannelHandle.h:174
friend FMovieSceneChannelHandle
Definition MovieSceneChannelHandle.h:208
TMovieSceneChannelHandle(TWeakPtr< FMovieSceneChannelProxy > InWeakChannelProxy, FName InChannelTypeName, int32 InChannelIndex)
Definition MovieSceneChannelHandle.h:204
Definition MovieSceneChannelTraits.h:63