protected void ReadPoseKeyframe( BinaryReader reader, VertexAnimationTrack track )
{
float time = ReadFloat( reader );
VertexPoseKeyFrame vkf = track.CreateVertexPoseKeyFrame( time );
if ( !IsEOF( reader ) )
{
MeshChunkID chunkID = ReadChunk( reader );
while ( !IsEOF( reader ) &&
chunkID == MeshChunkID.AnimationPoseRef )
{
switch ( chunkID )
{
case MeshChunkID.AnimationPoseRef:
{
ushort poseIndex = ReadUShort( reader );
float influence = ReadFloat( reader );
vkf.AddPoseReference( poseIndex, influence );
break;
}
}
if ( !IsEOF( reader ) )
chunkID = ReadChunk( reader );
}
if ( !IsEOF( reader ) )
{
// backpedal to the start of chunk
Seek( reader, -ChunkOverheadSize );
}
}
}