42 return static_cast<T*
>(
Ptr);
44 return *
static_cast<T**
>(
Ptr);
48 checkf(
false,
TEXT(
"Unexpected playback capability storage mode"));
62 return *
static_cast<T*
>(
Ptr);
64 return **
static_cast<T**
>(
Ptr);
68 checkf(
false,
TEXT(
"Unexpected playback capability storage mode"));
70 return *
static_cast<T*
>(
Ptr);
80template<
typename StorageType>
95template<
typename Po
intedType>
111template<
typename Po
intedType>
130template<
typename StorageType>
135 StorageType* StoragePtr = (StorageType*)Ptr;
136 StoragePtr->~StorageType();
147template<
typename StorageType>
160template<
typename StorageType,
typename CapabilityType,
typename=
void>
163template<
typename StorageType,
typename CapabilityType>
170 const uint64 PointerOffset =
171 reinterpret_cast<uint64>(
static_cast<CapabilityType*
>(StoragePtr))
173 reinterpret_cast<uint64>(StoragePtr);
175 return static_cast<uint8>(PointerOffset);
179template<
typename CapabilityType>
187template<
typename CapabilityType>
200#if UE_MOVIESCENE_ENTITY_DEBUG
276 template<
typename StorageType,
typename CapabilityType,
typename ...ArgTypes>
341 check( RequiredAlignment <= 0XFF );
431 static_assert(
alignof(StorageType) < 0x7F,
"Required alignment of capability must fit in 7 bytes");
436 static_assert(
sizeof(StorageType) <=
MAX_uint16,
"Can't store a playback capability with a size above 65535 bits. Store it as a raw or shared pointer.");
437 static_assert(
alignof(StorageType) <=
MAX_uint8,
"Can't store a playback capability with an alignment above 255 bits. Store it as a raw or shared pointer.");
444 NewHeaderPtr->StorageMode = FStorageTraits::GetStorageMode();
450#if UE_MOVIESCENE_ENTITY_DEBUG
480 template<
typename StorageType,
typename CapabilityType,
typename ...ArgTypes>
505 TEXT(
"The given capability size and alignment do not match the existing one")))
528#if UE_MOVIESCENE_ENTITY_DEBUG
579template<
typename T,
typename =
void>
587 std::is_assignable_v<FPlaybackCapabilityID, decltype(T::GetPlaybackCapabilityID())>
590 using Type = std::decay_t<
decltype(T::GetPlaybackCapabilityID())>;
592 static Type Get() {
return T::GetPlaybackCapabilityID(); }
600 std::is_assignable_v<FPlaybackCapabilityID, decltype(T::ID)>
603 using Type = std::decay_t<
decltype(T::ID)>;
640 static_assert(std::is_same<T, typename CapabilityIDType::CapabilityType>::value,
"You must pass the actual playback capability type as a template parameter, not a sub-class.");
655 static_assert(std::is_same<T, typename CapabilityIDType::CapabilityType>::value,
"You must pass the actual playback capability type as a template parameter, not a sub-class.");
670 template<
typename T,
typename ...ArgTypes>
674 using CapabilityType =
typename CapabilityIDType::CapabilityType;
684 template<
typename T,
typename U,
typename ...ArgTypes>
700 using CapabilityType =
typename CapabilityIDType::CapabilityType;
715 using CapabilityType =
typename CapabilityIDType::CapabilityType;
728 template<
typename T,
typename ...ArgTypes>
732 using CapabilityType =
typename CapabilityIDType::CapabilityType;
746 using CapabilityType =
typename CapabilityIDType::CapabilityType;
760 using CapabilityType =
typename CapabilityIDType::CapabilityType;
780 template<
typename Callback,
typename ...ArgTypes>
799 template<
typename Impl,
typename T,
typename ...ArgTypes>
804 return Ptr.ResolveChecked<T>();
807 template<
typename Impl,
typename T,
typename ...ArgTypes>
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
constexpr T Align(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:18
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define MAX_uint16
Definition NumericLimits.h:20
#define MAX_uint8
Definition NumericLimits.h:19
Definition IMovieScenePlaybackClient.h:25
Definition IMovieScenePlayer.h:90
Definition ArrayView.h:139
UE_FORCEINLINE_HINT constexpr SizeType Num() const
Definition ArrayView.h:380
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
Definition SharedPointer.h:692
UE_FORCEINLINE_HINT ObjectType * Get() const
Definition SharedPointer.h:1065
Definition SharedPointer.h:153
Definition MovieSceneEntitySystemLinker.h:113
Definition ExpressionParserTypes.h:21
Definition ConstraintsManager.h:14
void(*)(void *Ptr) FPlaybackCapabilityDestructionHelper
Definition MovieScenePlaybackCapabilities.h:77
EPlaybackCapabilityStorageMode
Definition MovieScenePlaybackCapabilities.h:20
IPlaybackCapability *(*)(void *Ptr) FPlaybackCapabilityInterfaceCastHelper
Definition MovieScenePlaybackCapabilities.h:76
U16 Index
Definition radfft.cpp:71
static UE_FORCEINLINE_HINT void * Memmove(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:109
static FORCENOINLINE CORE_API void Free(void *Original)
Definition UnrealMemory.cpp:685
Definition NumericLimits.h:41
Definition PointerIsConvertibleFromTo.h:60
Definition RelativePtr.h:11
T * Resolve(const void *BasePtr) const
Definition RelativePtr.h:34
void Reset(TYPE_OF_NULLPTR)
Definition RelativePtr.h:45
Definition MovieSceneSequenceInstanceHandle.h:15
Definition MovieScenePlaybackCapabilities.h:232
FPlaybackCapabilitiesImpl & operator=(const FPlaybackCapabilitiesImpl &)=delete
FPlaybackCapabilitiesImpl(const FPlaybackCapabilitiesImpl &)=delete
uint8 Num
Definition MovieScenePlaybackCapabilities.h:568
FPlaybackCapabilityPtr AddCapability(uint32 CapabilityBit, ArgTypes &&... InArgs)
Definition MovieScenePlaybackCapabilities.h:277
FPlaybackCapabilitiesImpl & operator=(FPlaybackCapabilitiesImpl &&)=delete
bool HasCapability(uint32 CapabilityBit) const
Definition MovieScenePlaybackCapabilities.h:243
TArray< FPlaybackCapabilityHelpers > Helpers
Definition MovieScenePlaybackCapabilities.h:572
const FPlaybackCapabilityHeader & GetHeader(uint8 Index) const
Definition MovieScenePlaybackCapabilities.h:537
bool OverwriteCapability(uint32 CapabilityBit, ArgTypes &&... InArgs)
Definition MovieScenePlaybackCapabilities.h:481
uint32 AllCapabilities
Definition MovieScenePlaybackCapabilities.h:569
FPlaybackCapabilitiesImpl()=default
uint16 Alignment
Definition MovieScenePlaybackCapabilities.h:566
uint8 * Memory
Definition MovieScenePlaybackCapabilities.h:565
TArrayView< const FPlaybackCapabilityHeader > GetHeaders() const
Definition MovieScenePlaybackCapabilities.h:549
int32 GetCapabilityIndex(uint32 CapabilityBit) const
Definition MovieScenePlaybackCapabilities.h:554
FPlaybackCapabilityPtr FindCapability(uint32 CapabilityBit) const
Definition MovieScenePlaybackCapabilities.h:248
FPlaybackCapabilityHeader & GetHeader(uint8 Index)
Definition MovieScenePlaybackCapabilities.h:543
FPlaybackCapabilityPtr GetCapabilityChecked(uint32 CapabilityBit) const
Definition MovieScenePlaybackCapabilities.h:260
uint16 Capacity
Definition MovieScenePlaybackCapabilities.h:567
FPlaybackCapabilitiesImpl(FPlaybackCapabilitiesImpl &&)=delete
Definition MovieScenePlaybackCapabilities.h:614
T & OverwriteCapabilityRaw(T *InPointer)
Definition MovieScenePlaybackCapabilities.h:743
void InvalidateCachedData(UMovieSceneEntitySystemLinker *Linker)
Definition MovieScenePlaybackCapabilities.cpp:46
T & OverwriteCapability(ArgTypes &&... InArgs)
Definition MovieScenePlaybackCapabilities.h:729
T & AddCapability(const TPlaybackCapabilityID< U > CapabilityID, ArgTypes &&... InArgs)
Definition MovieScenePlaybackCapabilities.h:685
FPlaybackCapabilities(const FPlaybackCapabilities &)=delete
FPlaybackCapabilities()=default
bool HasCapability() const
Definition MovieScenePlaybackCapabilities.h:627
T & AddCapability(ArgTypes &&... InArgs)
Definition MovieScenePlaybackCapabilities.h:671
FPlaybackCapabilities & operator=(const FPlaybackCapabilities &)=delete
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
MOVIESCENE_API ~FPlaybackCapabilities()
Definition MovieScenePlaybackCapabilities.cpp:36
void OnSubInstanceCreated(TSharedRef< const FSharedPlaybackState > Owner, const FInstanceHandle InstanceHandle)
Definition MovieScenePlaybackCapabilities.cpp:41
T & GetCapabilityChecked() const
Definition MovieScenePlaybackCapabilities.h:650
Definition MovieScenePlaybackCapabilities.h:142
FPlaybackCapabilityDestructionHelper Destructor
Definition MovieScenePlaybackCapabilities.h:144
FPlaybackCapabilityInterfaceCastHelper InterfaceCast
Definition MovieScenePlaybackCapabilities.h:143
Definition MovieScenePlaybackCapabilities.h:30
EPlaybackCapabilityStorageMode StorageMode
Definition MovieScenePlaybackCapabilities.h:32
T * ResolveOptional() const
Definition MovieScenePlaybackCapabilities.h:35
void * Ptr
Definition MovieScenePlaybackCapabilities.h:31
T & ResolveChecked() const
Definition MovieScenePlaybackCapabilities.h:56
Definition IMovieScenePlaybackCapability.h:78
static Type Get()
Definition MovieScenePlaybackCapabilities.h:592
std::decay_t< decltype(T::GetPlaybackCapabilityID())> Type
Definition MovieScenePlaybackCapabilities.h:590
std::decay_t< decltype(T::ID)> Type
Definition MovieScenePlaybackCapabilities.h:603
static Type Get()
Definition MovieScenePlaybackCapabilities.h:605
Definition MovieScenePlaybackCapabilities.h:580
Definition MovieScenePlaybackCapabilities.h:132
static void Destroy(void *Ptr)
Definition MovieScenePlaybackCapabilities.h:133
Definition MovieScenePlaybackCapabilities.h:149
static FPlaybackCapabilityHelpers GetHelpers()
Definition MovieScenePlaybackCapabilities.h:150
Definition IMovieScenePlaybackCapability.h:46
static IPlaybackCapability * InterfaceCast(void *Ptr)
Definition MovieScenePlaybackCapabilities.h:98
static IPlaybackCapability * InterfaceCast(void *Ptr)
Definition MovieScenePlaybackCapabilities.h:114
Definition MovieScenePlaybackCapabilities.h:82
static IPlaybackCapability * InterfaceCast(void *Ptr)
Definition MovieScenePlaybackCapabilities.h:83
static uint8 ComputePointerOffset(CapabilityType **StoragePtr)
Definition MovieScenePlaybackCapabilities.h:184
static EPlaybackCapabilityStorageMode GetStorageMode()
Definition MovieScenePlaybackCapabilities.h:182
static EPlaybackCapabilityStorageMode GetStorageMode()
Definition MovieScenePlaybackCapabilities.h:166
static uint8 ComputePointerOffset(StorageType *StoragePtr)
Definition MovieScenePlaybackCapabilities.h:168
static EPlaybackCapabilityStorageMode GetStorageMode()
Definition MovieScenePlaybackCapabilities.h:190
static uint8 ComputePointerOffset(TSharedPtr< CapabilityType > *StoragePtr)
Definition MovieScenePlaybackCapabilities.h:192
Definition MovieScenePlaybackCapabilities.h:161