Fix serialization issues related to sequence node/track (#214) (#247)

* Fix serialization issues related to sequence node/track
This commit is contained in:
chiyenteng
2021-04-22 17:42:06 -07:00
committed by GitHub
parent 9ca7408929
commit bac334a244
73 changed files with 801 additions and 442 deletions
@@ -100,23 +100,41 @@ int CTimeRangesTrack::GetActiveKeyIndexForTime(const float time)
}
//////////////////////////////////////////////////////////////////////////
template<>
inline void TAnimTrack<ITimeRangeKey>::Reflect(AZ::SerializeContext* serializeContext)
static bool TimeRangesTrackVersionConverter(
AZ::SerializeContext& serializeContext,
AZ::SerializeContext::DataElementNode& rootElement)
{
serializeContext->Class<TAnimTrack<ITimeRangeKey> >()
->Version(2)
->Field("Flags", &TAnimTrack<ITimeRangeKey>::m_flags)
->Field("Range", &TAnimTrack<ITimeRangeKey>::m_timeRange)
->Field("ParamType", &TAnimTrack<ITimeRangeKey>::m_nParamType)
->Field("Keys", &TAnimTrack<ITimeRangeKey>::m_keys)
->Field("Id", &TAnimTrack<ITimeRangeKey>::m_id);
if (rootElement.GetVersion() < 3)
{
rootElement.AddElement(serializeContext, "BaseClass1", azrtti_typeid<IAnimTrack>());
}
return true;
}
template<>
inline void TAnimTrack<ITimeRangeKey>::Reflect(AZ::ReflectContext* context)
{
if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
{
serializeContext->Class<TAnimTrack<ITimeRangeKey>, IAnimTrack>()
->Version(3, &TimeRangesTrackVersionConverter)
->Field("Flags", &TAnimTrack<ITimeRangeKey>::m_flags)
->Field("Range", &TAnimTrack<ITimeRangeKey>::m_timeRange)
->Field("ParamType", &TAnimTrack<ITimeRangeKey>::m_nParamType)
->Field("Keys", &TAnimTrack<ITimeRangeKey>::m_keys)
->Field("Id", &TAnimTrack<ITimeRangeKey>::m_id);
}
}
//////////////////////////////////////////////////////////////////////////
void CTimeRangesTrack::Reflect(AZ::SerializeContext* serializeContext)
void CTimeRangesTrack::Reflect(AZ::ReflectContext* context)
{
TAnimTrack<IBoolKey>::Reflect(serializeContext);
TAnimTrack<ITimeRangeKey>::Reflect(context);
serializeContext->Class<CTimeRangesTrack, TAnimTrack<ITimeRangeKey> >()
->Version(1);
if (auto serializeContext = azrtti_cast<AZ::SerializeContext*>(context))
{
serializeContext->Class<CTimeRangesTrack, TAnimTrack<ITimeRangeKey>>()
->Version(1);
}
}