protected void WriteAnimationTrack( BinaryWriter writer, VertexAnimationTrack track )
{
long start_offset = writer.Seek( 0, SeekOrigin.Current );
WriteChunk( writer, MeshChunkID.AnimationTrack, 0 );
WriteUShort( writer, (ushort)track.AnimationType );
WriteUShort( writer, track.Handle );
foreach ( KeyFrame keyFrame in track.KeyFrames )
{
if ( keyFrame is VertexMorphKeyFrame )
{
VertexMorphKeyFrame vmkf = keyFrame as VertexMorphKeyFrame;
WriteMorphKeyframe( writer, vmkf );
}
else if ( keyFrame is VertexPoseKeyFrame )
{
VertexPoseKeyFrame vpkf = keyFrame as VertexPoseKeyFrame;
WritePoseKeyframe( writer, vpkf );
}
}
long end_offset = writer.Seek( 0, SeekOrigin.Current );
writer.Seek( (int)start_offset, SeekOrigin.Begin );
WriteChunk( writer, MeshChunkID.AnimationTrack, (int)( end_offset - start_offset ) );
writer.Seek( (int)end_offset, SeekOrigin.Begin );
}