void ReadTransformAnimation(ref ExposedList <Timeline> timelines, SkeletonDataStream input, ref float duration, float scale)
{
// Transform constraint timelines.
for (int i = 0, n = SkeletonDataStream.sp_readVarint(input.ptr, 1); i < n; i++)
{
int index = SkeletonDataStream.sp_readVarint(input.ptr, 1);
int frameCount = SkeletonDataStream.sp_readVarint(input.ptr, 1);
TransformConstraintTimeline timeline = new TransformConstraintTimeline(frameCount);
timeline.transformConstraintIndex = index;
for (int frameIndex = 0; frameIndex < frameCount; frameIndex++)
{
timeline.SetFrame(frameIndex, SkeletonDataStream.sp_readFloat(input.ptr), SkeletonDataStream.sp_readFloat(input.ptr), SkeletonDataStream.sp_readFloat(input.ptr), SkeletonDataStream.sp_readFloat(input.ptr), SkeletonDataStream.sp_readFloat(input.ptr));
if (frameIndex < frameCount - 1)
{
SkeletonDataStream.sp_readCurve(input.ptr, frameIndex, timeline.curves);
}
}
timelines.Add(timeline);
duration = Math.Max(duration, timeline.frames[(frameCount - 1) * TransformConstraintTimeline.ENTRIES]);
}
}