[CherryPick][LYN-2738] Fix Reflect functions of IAnimSequence and CAnimSequence (#103)

* [CherryPick][LYN-2738] Fix Reflect functions of IAnimSequence and CAnimSequence (#85)
This commit is contained in:
chiyenteng
2021-04-16 17:06:58 -07:00
committed by GitHub
parent 250f8d8db0
commit 41db22be3d
3 changed files with 43 additions and 16 deletions
+12 -2
View File
@@ -19,6 +19,7 @@
#include <AzCore/Component/EntityId.h>
#include <AzCore/Math/Crc.h>
#include <AzCore/Math/Quaternion.h>
#include <AzCore/Serialization/SerializeContext.h>
#include <Range.h>
#include <AnimKey.h>
@@ -914,9 +915,18 @@ struct IAnimStringTable
*/
struct IAnimSequence
{
AZ_RTTI(IAnimSequence, "{A60F95F5-5A4A-47DB-B3BB-525BBC0BC8DB}")
AZ_RTTI(IAnimSequence, "{A60F95F5-5A4A-47DB-B3BB-525BBC0BC8DB}");
AZ_CLASS_ALLOCATOR(IAnimSequence, AZ::SystemAllocator, 0);
static const int kSequenceVersion = 4;
static const int kSequenceVersion = 5;
static void Reflect(AZ::ReflectContext* context)
{
if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context); serializeContext != nullptr)
{
serializeContext->Class<IAnimSequence>();
}
}
//! Flags used for SetFlags(),GetFlags(),SetParentFlags(),GetParentFlags() methods.
enum EAnimSequenceFlags
@@ -823,20 +823,37 @@ void CAnimSequence::SetId(uint32 newId)
}
//////////////////////////////////////////////////////////////////////////
void CAnimSequence::Reflect(AZ::SerializeContext* serializeContext)
static bool AnimSequenceVersionConverter(
AZ::SerializeContext& serializeContext,
AZ::SerializeContext::DataElementNode& rootElement)
{
serializeContext->Class<CAnimSequence>()
->Version(4)
->Field("Name", &CAnimSequence::m_name)
->Field("SequenceEntityId", &CAnimSequence::m_sequenceEntityId)
->Field("Flags", &CAnimSequence::m_flags)
->Field("TimeRange", &CAnimSequence::m_timeRange)
->Field("ID", &CAnimSequence::m_id)
->Field("Nodes", &CAnimSequence::m_nodes)
->Field("SequenceType", &CAnimSequence::m_sequenceType)
->Field("Events", &CAnimSequence::m_events)
->Field("Expanded", &CAnimSequence::m_expanded)
->Field("ActiveDirectorNodeId", &CAnimSequence::m_activeDirectorNodeId);
if (rootElement.GetVersion() < 5)
{
rootElement.AddElement(serializeContext, "BaseClass1", azrtti_typeid<IAnimSequence>());
}
return true;
}
void CAnimSequence::Reflect(AZ::ReflectContext* context)
{
IAnimSequence::Reflect(context);
if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context); serializeContext != nullptr)
{
serializeContext->Class<CAnimSequence, IAnimSequence>()
->Version(IAnimSequence::kSequenceVersion, &AnimSequenceVersionConverter)
->Field("Name", &CAnimSequence::m_name)
->Field("SequenceEntityId", &CAnimSequence::m_sequenceEntityId)
->Field("Flags", &CAnimSequence::m_flags)
->Field("TimeRange", &CAnimSequence::m_timeRange)
->Field("ID", &CAnimSequence::m_id)
->Field("Nodes", &CAnimSequence::m_nodes)
->Field("SequenceType", &CAnimSequence::m_sequenceType)
->Field("Events", &CAnimSequence::m_events)
->Field("Expanded", &CAnimSequence::m_expanded)
->Field("ActiveDirectorNodeId", &CAnimSequence::m_activeDirectorNodeId);
}
}
//////////////////////////////////////////////////////////////////////////
@@ -154,7 +154,7 @@ public:
return m_nextTrackId++;
}
static void Reflect(AZ::SerializeContext* serializeContext);
static void Reflect(AZ::ReflectContext* context);
private:
void ComputeTimeRange();