protected void WriteKeyFrame( BinaryWriter writer, TransformKeyFrame keyFrame )
{
long start_offset = writer.Seek( 0, SeekOrigin.Current );
WriteChunk( writer, SkeletonChunkID.KeyFrame, 0 );
WriteFloat( writer, keyFrame.Time );
WriteQuat( writer, keyFrame.Rotation );
WriteVector3( writer, keyFrame.Translate );
if ( keyFrame.Scale != Vector3.UnitScale )
WriteVector3( writer, keyFrame.Scale );
long end_offset = writer.Seek( 0, SeekOrigin.Current );
writer.Seek( (int)start_offset, SeekOrigin.Begin );
WriteChunk( writer, SkeletonChunkID.KeyFrame, (int)( end_offset - start_offset ) );
writer.Seek( (int)end_offset, SeekOrigin.Begin );
}