// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "EntitySystem/MovieScenePropertyTraits.h" #include "EntitySystem/MovieSceneEntityIDs.h" namespace UE { namespace MovieScene { struct FComponentRegistry; template struct TPropertyMetaDataComponentsImpl, TPropertyMetaData> { template using MakeTCHARPtr = const TCHAR*; TArrayView GetTypes() const { return MakeArrayView(Values); } template auto GetType() const { return MakeTuple(Values[Indices].template ReinterpretCast()...).template Get(); } // #include "EntitySystem/MovieScenePropertyMetaDataTraits.inl" for definition // void Initialize(FComponentRegistry* ComponentRegistry, MakeTCHARPtr... DebugNames); private: static constexpr int32 SIZE = sizeof...(MetaDataTypes); FComponentTypeID Values[SIZE]; }; template struct TPropertyMetaDataComponents> : TPropertyMetaDataComponentsImpl, TPropertyMetaData> {}; template<> struct TPropertyMetaDataComponents> { TArrayView GetTypes() const { return TArrayView(); } template void GetType() const { } }; } // namespace MovieScene } // namespace UE